Php ZF2视图JSONSTRATEGY和ZFCUser

Php ZF2视图JSONSTRATEGY和ZFCUser,php,json,zend-framework2,Php,Json,Zend Framework2,我有一个基于ZF2的web应用程序,它只响应JSON。我正在遵循从 他们没有使用ZFCUser实现该站点。。现在我想改用它。我成功地加载了模块,但意识到view_manager正在尝试使用html等为登录页面提供服务 我的global.php表示我总是用JSON响应 ), 'view_manager' => array( 'strategies' => array( 'ViewJsonStrategy', ), ), 我想我需要覆盖../vender

我有一个基于ZF2的web应用程序,它只响应JSON。我正在遵循从

他们没有使用ZFCUser实现该站点。。现在我想改用它。我成功地加载了模块,但意识到view_manager正在尝试使用html等为登录页面提供服务

我的global.php表示我总是用JSON响应

),
'view_manager' => array(
    'strategies' => array(
        'ViewJsonStrategy',
    ),
),
我想我需要覆盖../vender/zf commons/zfc user内部的控制器,并以某种方式删除所有这些HTML../view/相关内容?此服务器上不需要所有这些资源,因为视图是在其他位置完成的。ZFCUser能否正确、安全地执行此操作。。?或者我应该坚持他们最初的自定义用户实现吗

错误发生

我在猜测,因为除了上面提到的,我没有任何视图管理器。。我应该编写一个模块来处理所有错误并显示一条简单的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'

如果列出的是唯一的“查看管理器”配置,则需要为错误/404页面添加配置部分。此外,您的错误无法呈现模板错误使我认为您没有它

这是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',
    ),
),
您是否使用其中一个来构建ZF2应用程序?如果是,您应该配置好应用程序模块

关于Json响应和ZFCUser,您需要创建一个扩展ZFCUser\controller\UserController的控制器,然后覆盖用于路由的该控制器的可调用服务,检查ZFCUser module.config.php中的路由配置

'controllers' => array(
    'invokables' => array(
        'zfcuser' => 'My\Controller\UserController',
    ),
),
然后,您可以覆盖您的操作,并使用Zend\View\Model\JsonModel让它们返回json

希望能有帮助

干杯