私の問題はKohanaがビューをレンダリングすることだけです。 Controller_OtherでKohanaはfooクラスのView :: factory( '/ foo/bar')ヒットバーを作成します
View::factory('/foo/bar')
の場合は、最初にController_Fooにヒットしません。私はそれがコントローラに当たってからビューをレンダリングするようにしたい。
class Controller_Other extends Controller_Template {
public $template = 'main';
public function action_index() {
$this->template->body = View::factory('/foo/bar');
}
}
は、どのように私はそれが最初のコントローラを介して実行するようになるだろう:
class Controller_Foo extends Controller_Template {
public function action_bar() {
$this->myVar = 'foo';
}
}
私はいくつかの他のView::factory()
からそれを呼び出したときに鑑み、$myVar
は常にviews/foo/bar.php
に設定されているので、?
編集:
行くその文字列への独自のビューをレンダリングするためにaction_bar
を強制するよりもきれいな方法がなければならない:
$foo = new Controller_Foo($this->request, $this->response);
$this->template->body = $foo->action_bar();
内部要求は私が行っているもののように見えます。 action_barを独自のものにして、そのビューをレンダリングするたびにmyVarを別の場所に設定する必要はありません。 Btwは、$ this-> myVarですか?それはちょうど$ myVarではないでしょうか?誰でも、あなたは私の問題を完全に解決しました。これは、新しいコントローラオブジェクトを作成してメソッドを呼び出すよりもはるかにクリーンです。 – tester
はい、 '$ this-> myVar'は' $ myVar'でなければなりません。 :)私の答えを編集しました。私はあなたを助けることができてうれしい。 :) – egis