4

beta3を使用したスケルトンアプリケーションから、Fooという新しいモジュールのビューパスをどのように解決すればよいですか?zf2 resolve module view path

私はdi設定に以下を追加しましたが、現在は両方のモジュールアクションがFooの表示をレンダリングしています。

'Zend\View\Resolver\TemplatePathStack' => array(
    'parameters' => array(
     'paths' => array(
      'foo' => __DIR__ . '/../view', 
     ), 
    ), 
), 

私は、アプリケーション内のビューをレンダリングするApplication\Controller\IndexController::indexAction()を期待してFoo\Controller\IndexController::indexAction()のためのFooのビューをレンダリングします。

答えて

5

このような質問は、安定フレームワークの方向を決定するのに役立つことに注意してください。 :)

私がここで取り組んできた1つのアイデアは、ビュースクリプト解決の一環としてモジュールを使用することです。現在、デフォルトは "/"です。私の提案は、モジュール間の命名の衝突を防ぐのに役立つので、 "//"を使うことです。テンプレートマップを使用している場合、どのビュースクリプトをオーバーライドしているかを正確に理解することが非常に簡単になります。

このアプローチを使用することはできますが、コントローラから返すビューモデルにテンプレートを手動で設定する必要があります。

+0

わかりません私は、フォワードスラッシュを二重に使用するとどういう意味ですか? – gawpertron

+1

それは私のコンテンツを食べました。私は「今、デフォルトで使用されているのは「{controller}/{action}」です;私の提案は '{module}/{controller}/{action}' 'を使用することです。これは実際に安定したフレームワークのために行ったことです。 – weierophinney

2

ビュースクリプトを解決する際に名前空間を考慮する概念がないため、現在ZF2では動作しません。これにどのように取り組むべきかについての議論が現在進行中です。

当面は、各コントローラの名前を別々にする必要があります。一般的には、モジュール名の後にモジュール内の「プライマリ」コントローラの名前を付けることをお勧めします。つまり、FooモジュールのプライマリコントローラはFooControllerになります。

1

実際にこれを行うことができます。それほど悪くはありません....

ロブアレン自身は基本的にこの仕事をしています...あなたは基本的にそれを取り除くモジュールベースのローダーとして扱う必要があることに注意してくださいhttp://pastie.org/3824571