更改module.config.php的路由值后加载视图错误 - Zend Framework
此问题涉及到Zend Framework应用程序版本:2.1.3。我是开发人员,是Zend Framework的新成员,并且非常重视您的帮助。更改module.config.php的路由值后加载视图错误 - Zend Framework
我正在为一个教会的'捐赠者管理系统'制作一个模块。我正在使用的模块被称为“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
,但仍然存在错误。
注意:这是一个什么也没做的插件。我只是改变了route
的值,认为它会使URL看起来更整齐。
这里是我结束了[图片]:
不,这不是IE,因为我在Chrome尝试(它没有访问query-builder
URL)为好。
整个Zend文件夹(网站的根目录)没有提及query-builder
。它来自哪里,我如何改变它?
在此先感谢。
我是紫岩,首先提出这个问题的人。
在Google找不到解决方案之后,我想知道如何制作另一个模块并最终遇到同样的困境。困惑我做了一个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助手的崇高文本需要注意的情况。如果你可以在GitHub上修复这个插件,那就太好了。我会试一试我的自我。
我无法找到任何证据表明我的声明没有时间通过源代码。如果有人提供一些链接,会很高兴。
来自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。
我想我找到了正在发生的事情,但我打开了一个更好的答案。 – 2013-03-01 21:25:00