1

クラス名が「 google 」のコントローラーがあり、データの例が含まれているとします

// アプリケーション/コントローラ/google.php

$data = array(
    'target' => 'earth',
    'percentage' => 70
);

そのビュー ファイルは ' google_view.php ' // application/view/google_view.php です

そして、calss 名 " msn " を持つ 2 番目のコントローラーで、ここで " google " コントローラー データを取得したい.. または、変数を再度渡さずに " google_view " ファイルをインクルードしたいだけです$data

setflash の使用を聞いた..しかし問題は、ユーザーが google にアクセスせずに msn ページにアクセスした場合はどうなるかです

Googleコントローラーのデータを取得する方法はありますか?

また、opencart cms とそのコントローラーの MVC フレームワークを確認しました。以下のような別のコントローラーを呼び出すことができます。以下のコードでは、ヘッダー コントローラーを呼び出すことができます。

$this->children = array(
    'common/column_left',
    'common/column_right',
    'common/content_top',
    'common/content_bottom',
    'common/footer',
    'common/header'
);
4

2 に答える 2

1

CodeIgniter が実際に行っていない HMVC 機能を探しています。CI でそれを実装するこのライブラリを見てみましょう: https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc。ネット上には、HMVC と MVC をより詳細に説明しているリソースがたくさんあります。

この種のことを何らかの規模で行っている場合、CodeIgniter はアプリケーションに最適なフレームワークではない可能性があります。他のいくつかを検討する価値があります。私は今、多くのLaravelを使用していますが、別のコントローラーの出力を取得したいだけであれば、完全に正常に動作します (たとえば、Laravel では、単に移動します$second_controller_output = Route::forward('GET','other/controller');)。

それが役立つことを願っています!

于 2013-04-01T20:19:14.217 に答える
0

うーん... CIでそれを行うとは思いませんが、1つのアイデアを提案します...

コントローラーのコア クラスを拡張してから、アプリケーション コントローラーのコンストラクターで新しいクラスを拡張してください。例えば

class MY_Controller extends CI_Controller {

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

        $this->default_data_google = array(
            'target' => 'earth',
            'percentage' => 70
        );
    }

}

class Google extends MY_Controller {

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

    public function index() {
        $data = $this->default_data_google;
        $this->load->view('google_view', $data);
    }

}

//

..

class Msn extends MY_Controller {

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

    public function index() {
        $data = $this->default_data_google;
        $this->load->view('google_view', $data);
    }

}
于 2013-03-25T08:50:40.860 に答える