vista una otro otra llamar funcion desde controlador php codeigniter extending-classes

php - una - Code Igniter 2: ¿Cómo extender CI_Controller varias veces?



llamar un controlador desde otro controlador laravel (4)

Esto es bastante fácil. Haz lo siguiente:

  1. Vaya al siguiente directorio: your_ci_app/application/core/ y cree un archivo php llamado MY_Controller.php (este archivo será donde residan sus principales clases principales)
  2. Abra este el archivo que acaba de crear y agregue sus múltiples clases, así:

    class Admin_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test() { var_dump("from Admin_Parent"); } } class User_Parent extends CI_Controller { public function __construct() { parent::__construct(); } public function test(){ var_dump("from User_Parent"); } }

  3. Cree sus controladores hijos bajo este directorio your_ci_app/application/controllers/ . Lo llamaré adminchild.php

  4. Abra adminchild.php y cree su código de controlador, asegúrese de extender el nombre de la clase principal, de esta forma:

    class Adminchild extends Admin_Parent { function __construct() { parent::__construct(); } function test() { parent::test(); } }

He ampliado con éxito la clase CI_Controller creando un MY_Controller.php que he colocado en el directorio de la aplicación / núcleo.

core / My_Controller.php se ve más o menos así:

class MY_Controller extends CI_Controller { function __construct() { parent::__construct(); } }

Entonces cuando creo controladores normales se ven algo como esto:

class Home extends MY_Controller { function __construct() { parent::__construct(); } function index() { $this->load->view(''home''); } }

Estoy creando un back-end de administrador y quiero tener una clase base diferente para que los controladores se extiendan en lugar de My_Controller. Esto es para que pueda tener métodos comunes para los controladores de administración (es decir, authentication_check, etc.)

Lo que no puedo resolver es cómo creo otro controlador que amplíe CI_Controller.

El objetivo es que los controladores administrativos extiendan una clase base diferente de los controladores frontales.

El controlador base de administrador se vería así:

class MY_Admin_Controller extends CI_Controller { function __construct() { parent::__construct(); } }

Un controlador normal para las páginas de administración:

class Admin_home extends MY_Admin_Controller { function __construct() { parent::__construct(); } function index() { $this->load->view(''admin_home''); } }

El problema es que para extender la clase CI_Controller debe nombrar su archivo de controlador PREFIX_Controller.php y colocarlo en el núcleo / directorio. Pero quiero dos clases de controlador y no pueden tener el mismo nombre de archivo.



Simplemente pones ambos en el mismo archivo, tengo un proyecto que es exactamente el mismo que este.

Solo tenemos el administrador y el controlador extendido normal en el archivo MY_Controller.php , funciona bien.

El motivo principal de MY_Controller u otros archivos extendidos es que CodeIgniter los inicie automáticamente al cargar el archivo base (ya sea biblioteca, ayuda, etc.), puede tener muchas clases en estos archivos.

Editar:

Ni siquiera necesita llamarlos MY_Admin_Controller o MY_Controller , tenemos Admin_Controller y User_Controller y Ajax_Controller en el MY_Controller File


si desea extender otra clase en lugar de CI_controller, debe incluir la clase objetivo. por ejemplo

include ''auth.php''; class test extends Auth