Saltar al contenido

¿Cómo cargar un controlador desde otro controlador en codeigniter?

Haz todo lo posible por comprender el código de forma correcta previamente a utilizarlo a tu trabajo si ttienes algo que aportar puedes dejarlo en la sección de comentarios.

Solución:

sí se puede (para la versión 2)

carga así dentro de tu controlador

 $this->load->library('../controllers/whathever');

y llamar al siguiente método:

$this->whathever->functioname();

No puede cargar un controlador desde un controlador en CI, a menos que use HMVC o algo así.

Deberías pensar un poco en tu arquitectura. Si necesita llamar a un método de controlador desde otro controlador, entonces probablemente debería abstraer ese código a un asistente o biblioteca y llamarlo desde ambos controladores.

ACTUALIZAR

Después de leer su pregunta nuevamente, me doy cuenta de que su objetivo final no es necesariamente HMVC, sino la manipulación de URI. Corríjame si me equivoco, pero parece que está tratando de lograr las URL con la primera sección siendo el nombre del método y omitir el nombre del controlador por completo.

Si este es el caso, obtendrá una solución más limpia siendo creativo con sus rutas.

Para un ejemplo realmente básico, supongamos que tiene dos controladores, controller1 y controller2. Controller1 tiene un método method_1 – y controller2 tiene un método method_2.

Puedes configurar rutas como esta:

$route['method_1'] = "controller1/method_1";
$route['method_2'] = "controller2/method_2";

Luego, puede llamar al método 1 con una URL como http://site.com/method_1 y el método 2 con http://site.com/method_2.

Aunque este es un ejemplo codificado, muy básico, pero podría llevarlo a donde necesita estar si todo lo que necesita hacer es eliminar el controlador de la URL.


También puede ir con la reasignación de sus controladores.

De los documentos: “Si su controlador contiene una función llamada _remap (), siempre se llamará independientemente de lo que contenga su URI”.:

public function _remap($method)

    if ($method == 'some_method')
    
        $this->$method();
    
    else
    
        $this->default_method();
    

no puede llamar a un método de controlador desde otro controlador directamente

mi solución es usar herencias y extender su controlador desde el controlador de la biblioteca

class Controller1 extends CI_Controller 

    public function index() 
        // some codes here
    

    public function methodA()
        // code here
    

en tu controlador lo llamamos Mycontoller se extenderá Controller1

include_once (dirname(__FILE__) . "/controller1.php");

class Mycontroller extends Controller1 

    public function __construct() 
        parent::__construct();
    

    public function methodB()
        // codes....
    

y puedes llamar a methodA desde mycontroller

http://ejemplo.com/micontrolador/métodoA

http://ejemplo.com/micontrolador/métodoB

esta solución funcionó para mí

Te mostramos comentarios y puntuaciones

Agradecemos que quieras favorecer nuestro estudio escribiendo un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *