我只是设置了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
我的配置有什么问题?
答案 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”在运行时实际映射/解释的方式。