質問
限りのベストプラクティスが行くように、これは推奨されますか?私はアイテムやプロファイルコントローラで呼び出す必要があるコメントコントローラ+モデルを持っています。コメントコントローラが自動的にコメントモデルをロードします。
の項目とプロファイルコントローラから直接コメントコントローラを呼び出すことが許容される、またはその代わりにコメントモデルを呼び出すための「ベストプラクティス」の方法です?
Kohanaの中で、ビューはシングルトンクラスではありませんので、私は私は2つのビューで終わる別のコントローラ内のコントローラを呼び出すことであるかのように、私が尋ねます。私はちょうどモデルを呼び出すした場合一方、アイテムおよびプロファイル制御装置内の重複したコードが存在することになる。
すべてのあなたのMVCの専門家が助けます! =)
解決
一般的に、私は「ファット・モデル」のアプローチのために行くと思います。
私はあなたが複製については本当に心配しているどのようなコードはわかりません。
あなたがこれを行うことができますカップルの方法があります:
最初の方法: - いくつかのコメントを返すために、あなたのコメントモデルを調べます。 - あなたのビューにコメントデータを渡します。 - おそらくいくつかのビューヘルパーを使用して、ビューにコメントをレンダリング
第二の方法: - あなたのビューがモデルに直接話をすることはできませんない理由はありませんことを実現します。 - それはモデルから直接必要とし、それをレンダリングするデータをつかむビューヘルパーを書く
。私は2番目の方法を好みます。一部の人々は(!読み取り専用形式で)モデルに彼らの見解層の話をさせるという問題がありますが、私はそれらの一つではないんです。
他のヒント
、あなたはHMVC機能の恩恵を受けることができます。あなたは、コントローラ内のコントローラを実行することができます。
http://forum.kohanaphp.com/comments.php?DiscussionID=2768 >
いくつかの例については、上記のリンクをチェックしてください。
私はそれがどのようなあなたのコントローラーが戻るに依存言うと思います。
お使いのコントローラがのDTO /モデルを返すことができる場合は、、そして必ず、コントローラを呼び出すことは良いアイデアです。
あなたのコントローラは、あなたの機能に文書化され、厳格な、そして、できれば安定したエントリポイントを定義します。そのため、あなたはcompletly限りあなたはコントローラメソッドのシグネチャを変更いけないとして、コメントの実装を無視する、または意志でそれを変更することができます。
お使いのコントローラが生データを返すことができない場合は、見返りに、HTML(またはその他のマークアップ)を取得しているので、しかし、それは、間違いなくprolematicです。それはあなたが欲しいビューに直接htmlのパイプに持っている、またはそれからデータを抽出するだろうことを意味します。それらの両方は悪い考えです。
生のHTMLをパイピングすると、コメントのビューを変更した場合、プロファイルモジュール上のコメントの表示は、必然的に変わることを意味します。これはあなたが望むものであるかもしれないが、私は、柔軟性のために行くと思います。
あなたがデータを望んでいた場合さて、あなたはマークアップからデータを抽出する必要がありますあなたのビューが重く、逆効果である、返されます。
、あなただけの関数を直接呼び出すことができます。たとえばます:
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)
}
}