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。请注意,在第二个示例中,模块仍然是默认模块,但是由于路径分隔符的存在,控制器在 Bar/BazController.php 中接收名称 Bar_BazController。ViewRenderer 模仿控制器目录层次结构。

因此,这custom-search.phtml是正确的名称。现在您可能对存储它的目录有误,控制器名称(和模块)是什么?还要检查您查看脚本是否可以被 apache 读取。

编辑

在使用 ContextSwitch 的情况下:

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

刚刚在 ZF 1.6(旧但应该仍然有效)上对其进行了测试。所以也许你的初始化是错误的(使用'customSearch'而不是'custom-search'?)。

于 2011-07-12T20:04:51.077 回答