2

我只是设置bjyoungblood/bjy-authorize并想知道如何告诉 Zend Framework 2 我的error/403模板所在的位置。

我没有配置的初始设置'template' => 'error/403',

403.phtml文件位于供应商目录中,但我收到以下错误消息:

警告:include(C:\myproject\config\autoload/../view/error/403.phtml) [function.include]: 无法打开流:C:\myproject\vendor\zendframework\ 中没有这样的文件或目录zendframework\library\Zend\View\Renderer\PhpRenderer.php 在第 507 行

我的配置有什么问题?

4

2 回答 2

4

出于性能原因(主要是避免 stat 调用),BjyAuthorize 使用模板映射来定义在error/403请求视图时使用哪个文件。这是view_manager设置的一个选项,如Zend\View文档中所述。

要设置自己的,您可以简单地在您的中定义如下内容config/autoload/your-settings.local.php

'view_manager' => array(
    'template_map' => array(
        'error/403' => '/absolute/path/to/your/error/403.phtml',
    ),
),

或者,在您的模块配置中:

'view_manager' => array(
    'template_map' => array(
        'error/403' => __DIR__ . '/view/error/403.phtml',
    ),
),

我建议始终为配置提供绝对路径,因此请确保您的文件C:\myproject\config\autoload/../view/error/403.phtml是正确的路径。

如果您愿意,也可以对 403 错误使用不同的视图。这可以通过改变来实现$config['bjyauthorize']['template']

'bjyauthorize' => array(
    'template' => 'my-module/unauthorized-template',
),
于 2013-03-12T09:13:47.713 回答
2

您可以手动设置:

'error/403' => __DIR__ . '/../view/error/403.phtml',

在 module/Application/config/module.config.php 中并在 module.bjyauthorize.global.php 中注释掉这一行。我假设您正在使用骨架。

@aravind.udayashankara,BjyAuthorize 确实与作曲家一起工作,并且骨架已经配置为在供应商中加载模块,因此无需将其移动到模块目录中。

但是,phprender 似乎无法访问供应商中的视图目录。这可能是“error/403' => DIR .'/../view/error/403.phtml” 在运行时实际映射/解释的方式。

于 2013-03-12T08:31:08.177 回答