-2

ビュー内のModelクラスを直接呼び出すのがベストプラクティスですか?現在、CodeIgniterを使用してアプリケーションを開発しています。アプリケーションのさまざまなビューに、データベースから取得したいメニューを含めています。そして、現在、コントローラーを介してメニューに値を渡しています。共通のモデルクラスを作成し、それをビューおよびバイパスコントローラーから呼び出す場合。モデルへの呼び出しが1回あり、データベースからメニューを一度にロードし、コントローラーをバイパスするようにします。これを行うことによって、どのような長所と短所が来るのでしょうか?

4

4 に答える 4

2

codeigniterを使用すると、データがどこから来たのかを気にする必要はなく、データが存在するだけです。コントローラーのみがモデルと直接接触する必要があります。

ビューにロードしたい共通のメニューがあり、そのコードをすべてのコントローラーに複製したくないようです。

この問題を解決するには、メニューをフェッチするメソッドを使用して、プライマリコントローラーが継承する共通コントローラーを作成する必要があります。

My_Controllercoreディレクトリ内のフォルダに保存する必要がありますapplication

class MY_Controller extends CI_Controller
{
    protected function get_menu()
    {
        // Load your menu here
        $this->load->model('menu_model');
        return $this->menu_model->get_menu();
    }
}

すべてのプライマリコントローラーは継承しますMY_Controller

class Home_Controller extends MY_Controller
{
    public function index()
    {
        $page_data = array('menu' => $this->get_menu());
        $this->load->view('home/index', $page_data);
    }
}
于 2013-03-21T13:44:52.657 に答える
0

私の意見では、ベストプラクティスではありません。ビューはコントローラーに接続する必要があり、コントローラーはモデルがすべてのロジックを実行するモデルからデータを取得する必要があります。コントローラーは、ビューとモデルの接着剤または仲介者であると想定しています。

Controllerは返されたデータをViewに渡し、foreachループなどを実行して表示します。

ビューはロジックを実行してはなりません。データベースからデータを取得することは、いくぶん論理的です。

于 2013-03-21T13:28:30.580 に答える
0

それは最悪の習慣です。それでは、なぜMVCのコントローラーコンセプトがあるのか​​。:)主にすべてのロジックがモデルに組み込まれるため、モデルを直接呼び出すのは適切ではありません。

于 2013-03-21T13:34:24.767 に答える
-1

共通のコントローラーを使用しているので問題ありません。

注:モデルをビューから直接呼び出さないでください。

于 2013-03-21T13:37:23.740 に答える