php - usar - ¿Cómo obtener una matriz de todos los controladores en un proyecto de Codeigniter?
configurar base url codeigniter (1)
Bueno, para responder directamente a la pregunta de codificación, puedes hacer esto:
foreach(glob(APPPATH . ''controllers/*'' . EXT) as $controller)
{
$controller = basename($controller, EXT);
$route[$controller] = $controller . ''/index'';
$route[$controller . ''/(.+)''] = $controller . ''/$1'';
}
Por supuesto, esto puede no ser el método más flexible más adelante.
Hay algunas otras formas de hacerlo. Una es crear un MY_Router e insertar
$this->set_class(''pages'');
$this->set_method($segments[0]);
before / en lugar de show_404 ();
Eso enviará / contactará a / pages / contact, pero solo si no se asignan controladores, métodos o rutas primero.
OOOOOOORRRRRR usa la Separación Modular y agrega lo siguiente a tus rutas principales.php
$routes[''404''] = ''pages'';
Me gustaría obtener una lista de todos los controladores en un proyecto Codeiginiter para que pueda recorrer fácilmente cada uno de ellos y agregar rutas definidas. Parece que no puedo encontrar un método que me dé lo que busco.
Aquí está el fragmento de código del archivo routes.php donde me gustaría acceder a la matriz: -
// I''d like $controllers to be dynamically populated by a method
//
$controllers = array(''pages'', ''users'');
// Loop through each controller and add controller/action routes
//
foreach ($controllers as $controller) {
$route[$controller] = $controller . ''/index'';
$route[$controller . ''/(.+)''] = $controller . ''/$1'';
}
// Any URL that doesn''t have a / in it should be tried as an action against
// the pages controller
//
$route[''([^//]+)$''] = ''pages/$1'';
ACTUALIZACIÓN # 1
Para explicar un poco más lo que estoy tratando de lograr ... Tengo un controlador de páginas que contiene páginas como about, contact-us, privacidad, etc. Todas estas páginas deben ser accesibles a través de / about, / contact-us y / privacy . Entonces, básicamente, cualquier acción / método en el controlador de Pages debe ser accesible sin tener que especificar / pages / <action>.
¿No estoy seguro de si voy por esto de la manera correcta?