首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改module.config.php - Zend路由值后加载视图错误

更改module.config.php - Zend路由值后加载视图错误
EN

Stack Overflow用户
提问于 2013-03-01 20:23:40
回答 2查看 341关注 0票数 0

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

我在为教堂的“捐献者管理系统”做一个模块。我正在处理的模块称为'QueryBuilder‘。以前的模块很好,工作也很棒。我使用Zend作为崇高文本,它为module.config.php生成了一些类似的东西

代码语言:javascript
复制
<?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,如下所示。

代码语言:javascript
复制
<?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。它是从哪里来的,我如何改变它呢?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 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。

票数 1
EN

Stack Overflow用户

发布于 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上修复这个插件,那就太棒了。我要试一试我自己。

我找不到任何证据来证明我的说法,也没有时间查看源代码。如果有人提供一些链接,我会很高兴的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15166248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档