如何在bjyauthorize中配置403模板

时间:2013-03-11 16:31:49

标签: zend-framework2 bjyauthorize

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

我没有配置'template' => 'error/403',

的初始设置

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

  

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

我的配置有什么问题?

2 个答案:

答案 0 :(得分:3)

出于性能原因(主要是避免使用stat调用),BjyAuthorize uses the template map定义在请求error/403视图时要使用的文件。这是view_manager设置的一个选项,如Zend\View documentation

中所述

要设置自己的内容,您只需在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',
),

答案 1 :(得分:2)

您可以手动设置:

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

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

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

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