0

这个问题是关于 Zend Framework 应用程序版本:2.1.3。作为开发人员,我是 Zend Framework 的新手,非常重视您的帮助。

我正在为教堂的“捐助者管理系统”制作一个模块。我正在研究的模块称为“QueryBuilder”。以前的模块很好,效果很好。我将 Zend Helper 用于 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-builderurl)。

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

提前致谢。

4

2 回答 2

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。

于 2013-03-02T16:30:19.953 回答
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 text 需要考虑这种情况。如果你能在 GitHub 上修复插件,那就太好了。我会试试我自己。

我找不到任何证据证明我的主张,也没有时间浏览源代码。如果有人提供一些链接会很高兴。

于 2013-03-01T21:24:18.480 回答