控制器无法使用get

我在/ application / core中有一个控制器

/application/core/CMS_Controller.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require APPPATH."third_party/MX/Controller.php";

class CMS_Controller extends MX_Controller {

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

    public function show_something() {
        echo "something shown";
    }
} 

我在模块中有另一个控制器(/modules/my_module/controllers/controller.php),它从CMS_Controller

/modules/my_module/controllers/controller.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller extends CMS_Controller {

    public function index() {
        $this->load->view('view');
    }
} 

并且,在view.php(/modules/my_module/views/view.php)中,我这样做: /modules/my_module/views/view.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 $ci =& get_instance();
 echo $ci->show_something();
?> 

我得到这个错误:

致命错误:在第3行调用未定义的方法CI :: show_something()/home/gofrendi/public_html/No-CMS/modules/my_module/views/view.php

如果我不使用MX_Controller并使用CI_Controller,它将起作用: /application/core/CMS_Controller.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//require APPPATH."third_party/MX/Controller.php";

class CMS_Controller extends CI_Controller {

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

    public function show_something() {
        echo "something shown";
    }
} 

有人知道这里有什么问题吗?


在应用程序/第三方/ MX / Controller.php在构造函数的末尾(54行之后)我添加

/* allow CI_Controller to reference MX_Controller */
CI::$APP->controller = $this;

如果你看看代码$ this,它指向MX_Controller的当前类,CI :: $ APP指向CI_controller(查看MX / Base.php文件)

所以现在它的简单...得到我们将要做的CI_Controller的引用(按照正常情况)

    $this->CI =& get_instance();

并获得对MX_Controller的引用,我们将这样做

    $this->CI =& get_instance()->controller;

我有同样的问题,发现后,它使我的网站的工作,试试也许吧?

“除非你打算在另一个控制器中运行一个控制器,否则你不需要扩展MX_Controller,在很多情况下代码都被放入库中,否则控制器应该只扩展MY_Controller。”

在这里找到:http://ellislab.com/forums/viewthread/179478/


对我来说,你不需要获取实例,所以我的尝试是这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 echo $this->show_something();
?> 

代替

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 $ci =& get_instance();
 echo $ci->show_something();
?> 

无论如何,这是一个很好的做法,设置自己的库,并像下面这样做:

$this->load->library('foo_lib');
$this->foo_lib->show_somenthing();
链接地址: http://www.djcxy.com/p/64247.html

上一篇: Controller, unable to use get

下一篇: How to handle WinRT exceptions that result in Exception?