2013-03-01 63 views
0

此问题涉及到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看起来更整齐。

这里是我结束了[图片]: The Error I get accessing the route

不,这不是IE,因为我在Chrome尝试(它没有访问query-builder URL)为好。

整个Zend文件夹(网站的根目录)没有提及query-builder。它来自哪里,我如何改变它?

在此先感谢。

+0

我想我找到了正在发生的事情,但我打开了一个更好的答案。 – 2013-03-01 21:25:00

回答

0

我是紫岩,首先提出这个问题的人。

在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上修复这个插件,那就太好了。我会试一试我的自我。

我无法找到任何证据表明我的声明没有时间通过​​源代码。如果有人提供一些链接,会很高兴。

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。