这个问题与Zend Framework应用程序版本:2.1.3有关。我,开发人员,是Zend Framework的新手,非常重视您的帮助。
我正在为一个教会的“捐助者管理系统”制作一个模块。我正在处理的模块称为'QueryBuilder'。以前的模块很好,效果很好。我使用Zend Helper for Sublime Text,它为module.config.php生成了类似的东西
<?php
/**
*
* @package QueryBuilder
*/
return array(
'controllers' => array(
'invokables' => array(
'QueryBuilder\Controller\QueryBuilder' => 'QueryBuilder\Controller\QueryBuilderController',
),
),
// The following section is new and should be added to your file
'router' => array(
'routes' => array(
'querybuilder' => array(
'type' => 'segment',
'options' => array(
'route' => '/querybuilder[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'QueryBuilder\Controller\QueryBuilder',
'action' => 'index',
//'action' => 'search',
//'action' => 'recent',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'querybuilder' => __DIR__ . '/../view',
),
),
);
?>
在制作一些成功的模块后,我决心要有一点乐趣,我改变了router
,如下所示。
<?php
/**
*
* @package QueryBuilder
*/
return array(
'controllers' => array(
'invokables' => array(
'QueryBuilder\Controller\QueryBuilder' => 'QueryBuilder\Controller\QueryBuilderController',
),
),
// The following section is new and should be added to your file
'router' => array(
'routes' => array(
'querybuilder' => array(
'type' => 'segment',
'options' => array(
'route' => '/query-builder[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'QueryBuilder\Controller\QueryBuilder',
'action' => 'index',
//'action' => 'search',
//'action' => 'recent',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'querybuilder' => __DIR__ . '/../view',
),
),
);
?>
注意:只有route
值已从/querybuilder...
更改为/query-builder...
。当我试图访问路线http://konnections/query-builder
时,我收到了一些错误,但我没有通过它。
想知道为什么我不想成为英雄,我将值更改回默认值。并尝试加载http://konnections/querybuilder
,但也出错了。
Zend\View\Renderer\PhpRenderer::render: Unable to render template "query-builder/query-builder/index"; resolver could not resolve to a file
否则在模块的代码中您可以找到单词query-builder
。如此常识说无法访问query-builder/query-builder/index
。
认为它可能是一些缓存,我在整个应用程序文件夹中查找它。然后我重新启动Apache,计算机,删除并创建了一个名为QueryBuilder
的新模块,但仍然存在错误。
注意:这是一个没有做任何事情的插件。我只更改了route
值,认为它会使URL看起来更整洁。
以下是我最终的[图片]:
不,这不是IE,因为我在Chrome中尝试过(也没有访问query-builder
网址。)
整个Zend文件夹(网站的根目录)没有引用query-builder
。它来自哪里,我该如何改变呢?
提前致谢。
答案 0 :(得分:1)
来自ZF1系列(http://framework.zend.com/manual/1.12/en/zend.controller.basics.html),ZF2相同但未在手册中找到此描述。
案例命名约定 由于人们在键入链接时保持区分大小写是众所周知的不一致,因此Zend Framework实际上将路径信息规范化为小写。当然,这会影响您对控制器和操作的命名方式......或者在链接中引用它们。 如果您希望控制器类或操作方法名称具有多个MixedCasedWords或camelCasedWords,则需要将URL上的这些单词与“ - ”或“。”分开。 (尽管您可以配置使用的字符)。 举个例子,如果你要在FooBarController :: bazBatAction()中进行操作,你可以在url上将它引用为/ foo-bar / baz-bat或/foo.bar/baz.bat。
答案 1 :(得分:0)
我是紫燕,一开始就问这个问题。
在谷歌找不到解决方案之后,我想知道制作另一个模块并最终遇到了同样的困境。困惑我做了一个Zend Framework的新安装,并制作了一个同名的模块。
Zend\View\Renderer\PhpRenderer::render: Unable to render template "query-builder/query-builder/index"; resolver could not resolve to a file
没有消失。
知道这不是重新配置的事情,我看得更近了。
似乎在每个单词之间划了一个划线。我就像Zend疯了!但不,它似乎是从每个大写字母拆分模块名称并使用' - '(短划线)连接它们。
在我的情况下,QueryBuilder
变为query-builder
或名为HelloModules
的插件将为hello-modules
。
因此,视图管理器似乎在寻找../views/query-builder/query-builder/index
。
就我而言,ZF Helper for Sublime文本需要了解情况。如果你可以在GitHub修复插件,那就太好了。我会试一试自己。
我找不到任何证明我的主张,也没有时间查看源代码。如果有人提供一些链接会很高兴。