vista una otro otra llamar funcion extender desde dentro controlador clase codeigniter

codeigniter - una - llamar un controlador desde otro controlador laravel



Codeigniter: llamar a un método de un controlador desde otro (8)

Debería crear un helper o una biblioteca que pueda cargarse para que el controlador pueda compartir funciones.

V3: https://www.codeigniter.com/user_guide/general/creating_libraries.html?highlight=library

V2: https://www.codeigniter.com/userguide2/general/creating_libraries.html

V3: https://www.codeigniter.com/user_guide/general/helpers.html?highlight=helpers

V2: https://www.codeigniter.com/userguide2/general/helpers.html

Tengo dos controladores ''a'' y ''b''

Me gustaría llamar a un método de controlador ''a'' desde un método de controlador '''' b ''

¿Alguien podría guiarme cómo puedo lograr esto

todos los esfuerzos apreciados gracias


Esto no es un comportamiento compatible del Sistema MVC. Si desea ejecutar una acción de otro controlador, simplemente redireccione al usuario a la página que desea (es decir, la función del controlador que consume la url).

Si desea una funcionalidad común, debe compilar una biblioteca para usar en los dos controladores diferentes.

Solo puedo suponer que quieres construir tu sitio un poco modular. (Es decir, volver a utilizar la salida de un método de controlador en otros métodos de controlador). Hay algunos complementos / extensiones para CI que lo ayudan a construir de esa manera. Sin embargo, la forma más sencilla es utilizar una biblioteca para crear "controles" comunes (es decir, cargar el modelo, convertir la vista en una cadena). Luego puede devolver esa secuencia y pasarla a la vista del otro controlador.

Puede cargar en una cadena agregando true al final de la llamada de vista:

$string_view = $this->load->view(''someview'', array(''data''=>''stuff''), true);


Estoy de acuerdo en que la forma de hacerlo es redirigir al nuevo controlador en casos habituales.

Encontré un caso de uso en el que necesitaba mostrar la misma página a 2 tipos diferentes de usuarios (usuario de backend que visualizaba la página de un usuario frontend), así que en mi opinión lo que necesitaba era llamar al controlador de frontend desde el controlador back-end.

Resolví el problema haciendo que el método frontend sea estático y lo envolví en otro método. ¡Espero eso ayude!

//========== // Frontend //========== function profile() { //Access check //Get profile id $id = get_user_id(); return self::_profile($id); } static function _profile($id) { $CI = &get_instance(); //Prepare page //Load view } //========== // Backend //========== function preview_profile($id) { $this->load->file(''controllers/frontend.php'', false); Frontend::_profile($id); }


Publiqué una pregunta algo similar hace un tiempo, pero con respecto a un modelo sobre CI.

Devolución de dos resultados de consulta separados dentro de una función de modelo

Aunque su pregunta no es exactamente la misma, creo que la solución sigue el mismo principio: si está proponiendo hacer lo que menciona en su pregunta, puede haber algo mal en la forma en que está codificando y podría haber alguna refactorización en orden.

El mensaje para llevar a casa es que lo que está preguntando no es el camino a seguir cuando se trabaja con MVC.

La mejor práctica es usar un Modelo para colocar funciones reutilizables y llamarlas en un controlador que muestre los datos a través de una vista, o mejor aún, use ayudantes o bibliotecas (para funciones que pueden ser necesarias repetidamente).


Puede usar la función redirect (). Me gusta esto

class ControllerA extends CI_Controller{ public function MethodA(){ redirect("ControllerB/MethodB"); } }


Puedes hacer como

$result= file_get_contents(site_url(''[ADDRESS TO CONTROLLER FUNCTION]''));

Reemplace [ADDRESS TO CONTROLLER FUNCTION] por la forma en que usamos en site_url();

Necesita echo output en la función del controlador en lugar de return .


test.php controlador test.php :

Class Test { function demo() { echo "Hello"; } }

test1.php controlador test1.php :

Class Test1 { function demo2() { require(''test.php''); $test = new Test(); $test->demo(); } }


Very simple way in codeigniter to call a method of one controller to other controller 1. Controller A class A extends CI_Controller { public function __construct() { parent::__construct(); } function custom_a() { } } 2. Controller B class B extends CI_Controller { public function __construct() { parent::__construct(); } function custom_b() { require_once(APPPATH.''controllers/a.php''); //include controller $aObj = new a(); //create object $aObj->custom_a(); //call function } }