zend view render如何解析查看脚本的路径

发布于 2024-11-19 11:51:44 字数 330 浏览 3 评论 0原文

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

这些文件名都不起作用“customsearch.xml.phtml”、“customSearch.xml.phtml”、“custom-search.xml.phtml”。

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

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

How does an action like this "customSearchAction()" map to the view script file name.

Neither of these file names work "customsearch.xml.phtml", "customSearch.xml.phtml", "custom-search.xml.phtml".

Please, note that I am using context switching view helper for xml, json. Also, the module and action are resolving properly. When I change the action name to "customsearchAction()" and name the rename the script file to "customsearch.xml.phtml", then it works.

So how is the view script file name resolved in the above case? in the Zend Framework

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月静好 2024-11-26 11:51:44

来自文档

注意:命名约定:控制器和操作名称中的单词分隔符
如果您的控制器或操作名称由多个单词组成,则调度程序要求这些单词在 URL 上由特定路径和单词分隔符分隔。 ViewRenderer 将在控制器名称中找到的任何路径分隔符替换为实际路径分隔符 ('/'),​​并在创建路径时替换以破折号 ('-') 找到的任何单词分隔符。因此,对操作 /foo.bar/baz.bat 的调用将分派到 FooBarController.php 中的 FooBarController::bazBatAction(),这将呈现 foo-bar/ baz-bat.phtml;对操作 /bar_baz/baz-bat 的调用将分派到 Bar/BazController.php 中的 Bar_BazController::bazBatAction() (注意路径分隔)并渲染 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'?)。

From documentation:

Note: Naming Conventions: Word Delimiters in Controller and Action Names
If your controller or action name is composed of several words, the dispatcher requires that these are separated on the URL by specific path and word delimiter characters. The ViewRenderer replaces any path delimiter found in the controller name with an actual path delimiter ('/'), and any word delimiter found with a dash ('-') when creating paths. Thus, a call to the action /foo.bar/baz.bat would dispatch to FooBarController::bazBatAction() in FooBarController.php, which would render foo-bar/baz-bat.phtml; a call to the action /bar_baz/baz-bat would dispatch to Bar_BazController::bazBatAction() in Bar/BazController.php (note the path separation) and render bar/baz/baz-bat.phtml.
Note that the in the second example, the module is still the default module, but that, because of the existence of a path separator, the controller receives the name Bar_BazController, in Bar/BazController.php. The ViewRenderer mimics the controller directory hierarchy.

So, from that custom-search.phtml is the right name. Now you are maybe wrong with the directory where you store it, what's the controller name (and module)? Check as well you view script is readable by apache.

Edit

In the case of ContextSwitch usage:

  • the initialisation is: $contextSwitch->addActionContext('custom-search', 'xml');
  • the view script is custom-search.xml.phtml

Just tested it on a ZF 1.6 (old but should still be valid). So maybe your initialization is wrong (used 'customSearch' instead of 'custom-search'?).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文