3

ベストプラクティスに関する限り、これは推奨されますか? アイテムとプロファイル コントローラーで呼び出す必要があるコメント コントローラー + モデルがあります。コメント コントローラーは、コメント モデルを自動的に読み込みます。

アイテムおよびプロファイル コントローラーから直接コメント コントローラーを呼び出すことは許容されますか?それとも、代わりにコメント モデルを呼び出す "ベスト プラクティス" の方法ですか?

kohana では、ビューはシングルトン クラスではないため、別のコントローラー内でコントローラーを呼び出すと、2 つのビューになってしまうためです。一方、モデルを呼び出すだけでは、items および profile コントローラー内に重複したコードが存在することになります。

MVC エキスパートの皆さんがお手伝いします! =)

4

4 に答える 4

6

Kohana 3 を使用すると、HMVC 機能を利用できます。コントローラー内でコントローラーを実行できます。

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

いくつかの例については、上記のリンクを確認してください

于 2009-09-22T08:17:07.223 に答える
3

一般的に、私は「ファット モデル」アプローチを採用します。

複製することを本当に心配しているコードがわかりません。

これを行うには、いくつかの方法があります。

最初の方法: - コメント モデルに問い合わせて、コメントを返します。- コメント データをビューに渡します。- おそらくいくつかのビューヘルパーを使用して、ビューにコメントをレンダリングします

2 番目の方法: - ビューがモデルと直接対話できない理由はないことを理解してください。- 必要なデータをモデルから直接取得してレンダリングするビュー ヘルパーを作成します。

私は2番目の方法を好みます。一部の人々は、ビュー レイヤーがモデルと通信するのに問題を抱えています (読み取り専用の方法で!) が、私はその 1 人ではありません。

于 2009-09-22T00:40:43.870 に答える
1

コントローラーが何を返すかによって異なります。

コントローラーが DTO/モデルを返すことができる場合は、コントローラーを呼び出すことをお勧めします。

コントローラーは、機能への厳密で文書化された、できれば安定したエントリ ポイントを定義します。したがって、Controller メソッドのシグネチャを変更しない限り、Comments の実装を完全に無視することも、自由に変更することもできます。

ただし、コントローラーが生データを返すことができない場合は、html (またはその他のマークアップ) を取得しているため、間違いなく問題があります。つまり、その html を必要なビューに直接パイプするか、そこからデータを抽出する必要があります。どちらも悪い考えです。

生の html をパイプするということは、コメントのビューを変更すると、プロファイル モジュールのコメントの表示が必然的に変更されることを意味します。これはあなたが望むものかもしれませんが、私は柔軟性を求めます。

ここで、データが必要な場合は、ビューが返したマークアップからデータを抽出する必要がありますが、これは重くて非生産的です。

于 2009-09-22T00:25:57.233 に答える
0

静的メソッドを呼び出そうとしている場合は、関数を直接呼び出すことができます。例えば:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
于 2012-07-30T22:31:54.763 に答える