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.