prinick96 / Ocrend-Framework

Ocrend Framework Repositorio Oficial, Comunidad en https://foro.ocrend.com
https://framework.ocrend.com
MIT License
44 stars 28 forks source link

Tener cada aplicación en carpetas separadas #17

Closed virla01 closed 6 years ago

virla01 commented 7 years ago

Quiero poner las aplicaciones dentro de carpetas separadas, como ejemplo tengo una aplicación para articulos, y en esa carpeta tengo la carpeta controller y dentro de esa carpeta tengo todos los controladores de esa aplicación, y tambien la carpeta models con sus archivos correspondientes. ejemplo:

Como puedo hacer para que el router me detecte el articulo y después el controlador? ahora tu router obtiene controlador/metodo/id, y yo quisiera aplicacion/controlador/metodo/id, y para los archivos de sistema normal deberia funcionar como estan ahora

marcgdl commented 7 years ago

Hola, según entiendo tendrías tus aplicaciones algo como esto ?

localhost/app1 localhost/app2

Es decir, lo que quieres es que el primer paramentro identifique tu aplicación, imagino que para evitar duplicar simplemente todo el framework por cada aplicación ?

virla01 commented 7 years ago

no, estarian dentro de app ahi dentro las carpetas de las aplicaciones

virla01 commented 7 years ago

en router agregue esto ` private $apli = null;

private $routes = array(
    '/apli' => 'none',
    '/controller' => 'alphanumeric',
    '/method' => 'none',
    '/id' => 'int'
);
    if(!empty($this->url) and $this->url != $this->dir) {
        $this->url = explode('/',$this->url);
        $this->apli = array_key_exists(0,$this->url) ? $this->url[0] : null;
        $this->controller = Strings::alphanumeric($this->url[1]) ? strtolower( $this->url[1] ) . 'Controller' : 'inicioController';
        $this->method = array_key_exists(2,$this->url) ? $this->url[2] : null;
        $this->id = array_key_exists(3,$this->url) ? $this->url[3] : null;
    } else {
        $this->controller = 'inicioController';
    }

public function getApli() : string {
    return trim($this->apli);
}

` con esto funciona, ahora solo me queda solucionar el tema de los modelos

prinick96 commented 7 years ago

Quieres que en "aplicacion/controlador/metodo/id", "aplicacion" cambie en la URL y según eso cargue una u otra carpeta en el sistema que contenga internamente controladores y modelos?

virla01 commented 7 years ago

si lo de los controladores ya funciona, donde ahora tengo el problema es con los modelos. mas que nada con aquellos como func login session que los tengo dentro de app/moldels. hice un if para diferenciar, pero no funciona bien ` $apli = $router->getApli();

if ($apli == ""){
    $model = ROOT_DIR . 'app/models/'. $model .'.php';
    if(is_readable($model)) {
        require_once($model);
    }
}else{
    $model = ROOT_DIR . 'app/'. $apli .'/models/'. $model .'.php';
    if(is_readable($model)) {
        require_once($model);
    }
}`
virla01 commented 7 years ago

alguna idea de como solucionar esto?