zend视图如何呈现解析查看脚本的路径

时间:2011-07-12 19:39:18

标签: zend-framework zend-view context-switch

像“customSearchAction()”这样的操作如何映射到视图脚本文件名。

这些文件名都不适用于“customsearch.xml.phtml”,“customSearch.xml.phtml”,“custom-search.xml.phtml”。

请注意,我正在为xml,json使用上下文切换视图助手。此外,模块和操作正在正确解决。当我将操作名称更改为“customsearchAction()”并命名将脚本文件重命名为“customsearch.xml.phtml”时,它就可以工作。

那么在上述情况下如何解析视图脚本文件名?在Zend框架中

1 个答案:

答案 0 :(得分:3)

来自documentation

  

注意:命名约定:控制器和操作名称中的字分隔符   如果您的控制器或操作名称由多个单词组成,则调度程序要求这些单词在URL上按特定路径和单词分隔符字符分隔。 ViewRenderer将控制器名称中找到的任何路径分隔符替换为实际路径分隔符('/'),并在创建路径时使用短划线(' - ')找到任何单词分隔符。因此,对动作/foo.bar/ baz.bat 的调用将调度到FooBarController.php中的FooBarController :: bazBatAction(),这将渲染foo-bar /巴兹 - bat.phtml;对action / bar_baz / baz-bat 的调用将调度到Bar / BazController.php中的Bar_BazController :: bazBatAction()(注意路径分离)并渲染bar /巴兹/的巴兹-bat.phtml 即可。   请注意,在第二个示例中,模块仍然是默认模块,但由于存在路径分隔符,控制器在Bar / BazController.php中接收名称Bar_BazController。 ViewRenderer模仿控制器目录层次结构。

因此,custom-search.phtml是正确的名称。现在你可能错误的存储它的目录,控制器名称(和模块)是什么?检查您的视图脚本是否可由apache读取。

修改

对于ContextSwitch用法:

  • 初始化为:$contextSwitch->addActionContext('custom-search', 'xml');
  • 视图脚本为custom-search.xml.phtml

刚刚在ZF 1.6上测试过它(旧的,但应该仍然有效)。所以也许你的初始化是错误的(使用'customSearch'而不是'自定义搜索'?)。