2011-06-28 15 views
1

ビューに関係を割り当てます。私は間を1-nの関係を作成しましたKohanaの/ ORMは、私は、コントローラのメソッド内のオブジェクトを持って

$this->template->content = View::factory('view')->bind('post', $post); 

:ビューに送信され

$post = ORM::factory('post', array('slug' => $slug); 

投稿とコメント。今のところ良い。

主な問題は次のとおりです。どのように私は、ビューにコメントを投稿渡す必要がありますか?現在、私はビュー($post->comments->find_all())でそれらを取得していますが、私はそれが最良の方法であるとは思わない(私の謙虚な意見ではMVC標準に合致しない)。私はまたコントローラのプロパティ($post->comments)にそれらを割り当てることを考えていましたが、未定義のプロパティ(私には意味があります)についてはエラーが発生します。

この問題を解決するにはどうすればよいですか?

答えて

1

なぜコントローラのコメントをつかむと、プレゼンテーションのためのビューに渡していませんか?少なくともそれは私がこれについてどうやって行くのかです。

私はあなたが投稿を意味と仮定し、あなたの複数のページに関してコメント、で
$post = ORM::factory('post', array('slug' => $slug)); 
$comments = $post->comments->find_all(); 
$this->template->content = View::factory('view')->bind('comments', $comments); 

... これは、私は通常、何をするのかです。

$posts = ORM::factory('post', array('slug' => $slug))->find_all(); 
$view = new View('view'); 
foreach ($posts as $post) { 
    $view->comments = $post->comments; 
    $this->template->content .= $view->render(); 
} 

これはあなたが多くの記事で作業している場合は特に、これを実現するための最も資源に優しい方法ではないかもしれないけど。したがって、ビューに投稿を渡してから、ビュー内でforeachループを実行すると、この問題を解決するより良い方法になる可能性があります。

$posts = ORM::factory('post', array('slug' => $slug))->find_all(); 
$this->template->content = View::factory('view')->bind('posts', $posts); 

ビューからの選択クエリの実行は、世界で最悪のものだとは必ずしも思っていませんが、しかし私は専門家ではありません...;)

私はこの質問をしばらく前にCodeIgniterに関して聞いていました...ビューにループを渡してループして、好意的な応答であるようでした...

Using CodeIgniter is it bad practice to load a view in a loop

+0

@Serhiy(あなたはウクライナ出身ですか?)素晴らしいアプローチですが、複数のページを取得したときのコメントはどうなりますか? – user342111223

+0

うん、ウクライナから、私はどのようにその状況を処理すると答えを更新しました。 – Serhiy

+0

: – user342111223

関連する問題