7

/ 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行目の/home/gofrendi/public_html/No-CMS/modules/my_module/views/view.phpにある未定義のメソッドCI :: show_something()を呼び出す

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";
    }
} 

誰かがここで何が悪いのか知っていますか?

4

3 に答える 3

0

私にとってはインスタンスを取得する必要はないので、私の試みは次のようになります:

<?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();
于 2013-01-06T20:48:40.023 に答える