rutas ruta route pasar parametros friendly encuentra dinamicas controlador configurar agregar php codeigniter model-view-controller

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