像“customSearchAction()”这样的操作如何映射到视图脚本文件名。
这些文件名都不适用于“customsearch.xml.phtml”,“customSearch.xml.phtml”,“custom-search.xml.phtml”。
请注意,我正在为xml,json使用上下文切换视图助手。此外,模块和操作正在正确解决。当我将操作名称更改为“customsearchAction()”并命名将脚本文件重命名为“customsearch.xml.phtml”时,它就可以工作。
那么在上述情况下如何解析视图脚本文件名?在Zend框架中
答案 0 :(得分:3)
注意:命名约定:控制器和操作名称中的字分隔符 如果您的控制器或操作名称由多个单词组成,则调度程序要求这些单词在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'而不是'自定义搜索'?)。