2013-03-11 43 views
2

我剛剛設置了bjyoungblood/bjy-authorize,並想知道我如何告訴Zend Framework 2我的error/403模板在哪裏。如何在bjyauthorize中配置403模板

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

初始設置的403.phtml文件位於供應商目錄中,但我得到了以下錯誤消息:

警告:包括(C:\ MyProject的\ config \ autoload /../ view/error/403.phtml)[function.include]:未能打開流:C:\ myproject \ vendor \ zendframework \ zendframework \ library \ Zend \ View \ Renderer \ PhpRenderer.php在線507

我的配置有什麼問題?

+0

我不知道你的計劃是什麼,據我所知,你不能使用作曲家bjyauthorize也,你需要把它放在modules目錄,只是在其添加到您全局配置模塊列表。我認爲php renderer在你的情況下不能在供應商目錄中訪問,所以你必須做一個變通的工作來實現這個 – 2013-03-11 18:00:55

+0

另外這裏是示例應用程序,它具有所有需要配置好的模塊。 https://github.com/patrioticcow/Zend-Project它真的很好開始 – 2013-03-11 18:01:54

回答

3

由於性能方面的原因(主要是避免統計調用),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', 
), 
+0

又是一個愚蠢的!我忽略了我的模板路徑是在'module.bjyauthorize.global.php'中定義的。我在那裏改變了view_manager的路徑,一切按預期工作。 – Ron 2013-03-12 09:50:02

2

您可以手動設置:

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

/應用/配置/ module.config.php和註釋掉module.bjyauthorize.global.php此行。我假設你正在使用骨架。

@ aravind.udayashankara,BjyAuthorize確實可以與作曲家一起工作,並且骨架已經配置爲在供應商中加載模塊,所以無需將其移動到模塊目錄中。

但是,似乎phprender無法訪問供應商中的視圖目錄。這可能是「錯誤/ 403」=>DIR。'/../view/error/403.phtml「實際上是在運行時映射/解釋。