这个问题涉及Zend应用程序版本: 2.1.3。我,开发人员,是Zend的新手,非常重视您的帮助。
我在为教堂的“捐献者管理系统”做一个模块。我正在处理的模块称为'QueryBuilder‘。以前的模块很好,工作也很棒。我使用Zend作为崇高文本,它为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,但仍然存在错误。
Note:这是一个没有做任何事情的插件。我只改变了route值,认为它会使URL看起来更整洁。
下面是我最后得到的图像:

不,这不是IE,因为我也尝试过Chrome (它没有访问query-builder url)。
整个Zend文件夹(网站的根)没有引用query-builder。它是从哪里来的,我如何改变它呢?
提前谢谢。
发布于 2013-03-02 16:30:19
在ZF1系列(http://framework.zend.com/manual/1.12/en/zend.controller.basics.html)中,ZF2是相同的,但在手册中找不到这种描述。
由于众所周知,当输入链接时,人在保持大小写敏感性方面是不一致的,Zend实际上将路径信息规范化为小写。当然,这会影响你如何命名你的控制器和行动.或者在链接中引用它们。如果希望控制器类或操作方法名称具有多个MixedCasedWords或camelCasedWords,则需要用'-‘或’‘分隔url上的这些单词。(尽管您可以配置所使用的字符)。例如,如果要使用FooBarController::bazBatAction()中的操作,可以在url上引用它,如/foo.bar/baz-bat或/foo.bar/baz.bat。
发布于 2013-03-01 21:24:18
我是子燕,是第一个提出这个问题的人。
在谷歌找不到解决方案之后,我开始想要制作另一个模块,结果却陷入了同样的困境。困惑我完成了Zend的新安装,并创建了一个同名的模块。
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帮助为崇高文本需要关注的情况。如果你能在GitHub上修复这个插件,那就太棒了。我要试一试我自己。
我找不到任何证据来证明我的说法,也没有时间查看源代码。如果有人提供一些链接,我会很高兴的。
https://stackoverflow.com/questions/15166248
复制相似问题