php - ruta - pasar parametros a controlador codeigniter
¿Cómo enrutar controladores en subcarpetas usando codeigniter 3? (2)
Por defecto, las versiones de codeIgniter 3 y posteriores no pueden usar subcarpetas en su ruta de controlador predeterminada.
Para poder usar una subcarpeta en default_controller, necesitas usar un MY_Router.php
$route[''default_controller''] = ''admin/login'';
aplicación>
aplicación> core>
aplicación> core> MY_Router.php
MY_Router.php
<?php
class MY_Router extends CI_Router {
protected function _set_default_controller() {
if (empty($this->default_controller)) {
show_error(''Unable to determine what should be displayed. A default route has not been specified in the routing file.'');
}
// Is the method being specified?
if (sscanf($this->default_controller, ''%[^/]/%s'', $class, $method) !== 2) {
$method = ''index'';
}
// This is what I added, checks if the class is a directory
if( is_dir(APPPATH.''controllers/''.$class) ) {
// Set the class as the directory
$this->set_directory($class);
// $method is the class
$class = $method;
// Re check for slash if method has been set
if (sscanf($method, ''%[^/]/%s'', $class, $method) !== 2) {
$method = ''index'';
}
}
if ( ! file_exists(APPPATH.''controllers/''.$this->directory.ucfirst($class).''.php'')) {
// This will trigger 404 later
return;
}
$this->set_class($class);
$this->set_method($method);
// Assign routed segments, index starting from 1
$this->uri->rsegments = array(
1 => $class,
2 => $method
);
log_message(''debug'', ''No URI present. Default controller set.'');
}
}
También asegúrate de seguir la forma de codeIgniter para nombrar archivos
Nombre de archivo: Login.php
<?php
class Login extends CI_Controller {
public function index() {
}
}
He creado un controlador en la subcarpeta de la carpeta del controlador y en la subcarpeta creo un controlador de inicio de sesión.
Pero no pude acceder a este controlador y ya se le dio una regla en el archivo de ruta.
Estructura :
Controller
--admin
---login.php
Regla de ruta:
$route[''default_controller''] = ''admin/login'';
$route[''admin_login''] = ''admin/login'';
Ruta: "admin / login" debería funcionar de manera predeterminada con la configuración de Codeigniter.
//WRONG
$route[''admin_login''] = ''admin/login'';
//GOOD
$route[''adm/log''] = ''admin/login'';
//!!!only needed if you want to change URL path, as CI works by default that way
También por favor verifique si usted:
- clase de controlador creada correctamente en login.php
- tienes que tener el método index () en la clase de controlador
- su clase DEBE ser nombrada con la primera letra de capital ex. "Iniciar sesión" NO "iniciar sesión"
Documentos sobre controladores Codeigniter