2

この「customSearchAction()」のようなアクションは、ビュー スクリプト ファイル名にどのようにマップされますか。

これらのファイル名は、「customsearch.xml.phtml」、「customSearch.xml.phtml」、「custom-search.xml.phtml」のいずれも機能しません。

xml、json のコンテキスト切り替えビュー ヘルパーを使用していることに注意してください。また、モジュールとアクションは適切に解決されています。アクション名を「customsearchAction()」に変更し、スクリプト ファイルの名前を「customsearch.xml.phtml」に変更すると、機能します。

では、上記の場合、ビュー スクリプトのファイル名はどのように解決されるのでしょうか。Zend フレームワークで

4

1 に答える 1

3

ドキュメントから:

注: 命名規則: コントローラー名およびアクション名の単語区切り文字 コントローラーまたはアクション名が複数の単語で構成されている場合、ディスパッチャーでは、特定のパスおよび単語区切り文字で URL を区切る必要があります。ViewRenderer は、パスを作成するときに、コントローラー名で見つかったパス区切り文字を実際のパス区切り文字 (「/」) に置き換え、単語区切り文字をダッシュ​​ (「-」) で置き換えます。したがって、アクション /foo.bar/ baz.batへの呼び出しは、FooBarController.php 内のFooBarController:: bazBatAction()にディスパッチされ、foo-bar/baz-bat.phtml をレンダリングします。アクション /bar_baz/ baz-batへの呼び出しは、Bar_BazController:: bazBatAction()にディスパッチされます。Bar/BazController.php で (パスの分離に注意してください)、 bar/baz/ baz-bat.phtmlをレンダリングします。2 番目の例では、モジュールは依然としてデフォルト モジュールですが、パス セパレーターが存在するため、コントローラーは Bar/BazController.php で Bar_BazController という名前を受け取ることに注意してください。ViewRenderer はコントローラーのディレクトリ階層を模倣します。

だから、それcustom-search.phtmlは正しい名前です。保存するディレクトリが間違っている可能性があります。コントローラー名 (およびモジュール) は何ですか? スクリプトがApacheで読み取り可能であることも確認してください。

編集

ContextSwitch を使用する場合:

  • 初期化は次のとおりです。$contextSwitch->addActionContext('custom-search', 'xml');
  • ビュースクリプトはcustom-search.xml.phtml

ZF 1.6でテストしました(古いですが、まだ有効なはずです)。したがって、初期化が間違っている可能性があります ( 「custom-search」の代わりに「customSearch」を使用しましたか?)。

于 2011-07-12T20:04:51.077 に答える