2014-04-22 76 views
0

我有一個基於ZF2的Web應用程序,只響應JSON。我正在關注如何從http://www.packtpub.com/zend-framework-2-application-development/bookZF2 ViewJsonStrategy和ZFCUser

那麼他們沒有實現與ZFCUser網站..現在我想切換到使用它。香港專業教育學院成功加載的模塊,但實現了view_manager要投放的HTML等等等等登錄頁面..

global.php表明我總是JSON迴應

), 
'view_manager' => array(
    'strategies' => array(
     'ViewJsonStrategy', 
    ), 
), 

我想我需要重寫../vender/zf-commons/zfc-user裏面的控制器,並以某種方式刪除所有這些HTML ../view/相關的東西?這個服務器上不需要所有這些資源,因爲該視圖在別處完成。 ZFCUser可以正確,安全地做到這一點..?或者我應該堅持原來的定製User執行(不理想IMO)

錯誤發生

我猜,因爲我沒有,除了上述的任何view_manager ..我應該寫一個模塊處理所有的錯誤,並顯示一個簡單的JSON錯誤信息,但我想我已經有了,在事件監聽器..

[Tue Apr 22 17:54:55.759143 2014] [:error] [pid 5835] [client 127.0.0.1:49695] PHP Fatal error: Uncaught exception 'Zend\\View\\Exception\\RuntimeException' with message 'Zend\\View\\Renderer\\PhpRenderer::render: Unable to render template "error"; resolver could not resolve to a file' in /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:499\nStack trace:\n#0 /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/View/View.php(205): Zend\\View\\Renderer\\PhpRenderer->render(Object(Zend\\View\\Model\\ViewModel))\n#1 /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/View/View.php(233): Zend\\View\\View->render(Object(Zend\\View\\Model\\ViewModel))\n#2 /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/View/View.php(198): Zend\\View\\View->renderChildren(Object(Zend\\View\\Model\\ViewModel))\n#3 /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/Mvc/View/Http/DefaultRenderingStrategy.php(102): Zend\\View\\View->render(Object(Zend\\View\\Model\\ViewModel))\n#4 [internal function]: Zend\\Mvc\\View\\Http\\Defa in /var/www/html/zf2project/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php on line 499 
[Tue Apr 22 17:59:18.892507 2014] [mpm_prefork:notice] [pid 5829] AH00169: caught SIGTERM, shutting down 
[Tue Apr 22 17:59:19.983382 2014] [mpm_prefork:notice] [pid 5973] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4 configured -- resuming normal operations 
[Tue Apr 22 17:59:19.983556 2014] [core:notice] [pid 5973] AH00094: Command line: '/usr/sbin/apache2' 

回答

0

如果列出的是唯一的「view_manager」配置,你需要添加配置一部分錯誤/ 404頁。另外你的錯誤Unable to render template "error"讓我覺得你沒有它。

這是ZF2框架應用程序的'view_manager'配置,您應該爲錯誤處理添加配置鍵。

'view_manager' => array(
    'display_not_found_reason' => true, 
    'display_exceptions'  => true, 
    'doctype'     => 'HTML5', 
    'not_found_template'  => 'error/404', 
    'exception_template'  => 'error/index', 
    'template_map' => array(
     'layout/layout'   => __DIR__ . '/../view/layout/layout.phtml', 
     'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 
     'error/404'    => __DIR__ . '/../view/error/404.phtml', 
     'error/index'    => __DIR__ . '/../view/error/index.phtml', 
    ), 
    'template_path_stack' => array(
     __DIR__ . '/../view', 
    ), 
), 

你有沒有使用adviced methods的一個腳手架你ZF2應用程序?如果是的話,你應該有應用程序模塊配置良好。

關於Json響應和ZFCUser,您需要創建一個擴展ZfcUser \ Controller \ UserController的控制器,然後覆蓋此控制器的Invokable服務(它用於路由,檢查ZfcUser模塊中的路由配置.config.php)

'controllers' => array(
    'invokables' => array(
     'zfcuser' => 'My\Controller\UserController', 
    ), 
), 

則可以覆蓋你的行動,讓他們使用Zend \查看\型號\ JsonModel返回JSON。

希望它有幫助。

乾杯。