我从ZF2 Skeleton Application开始创建了一个ZF2 REST Web服务。
我创建了自己的模块,我的路线和查看策略为ViewStrategyJson
。
我想要做的是删除默认的"应用程序"模块,以便我的应用程序中唯一的模块是我自己的自定义模块,用于我的REST服务。
我尝试删除"应用程序"从application.config.php
中的模块列表中进行此更改:
'modules' => array(
'Application',
'RestModule',
),
'modules' => array(
'RestModule',
),
然而,当我这样做时,对我的REST模块的所有请求现在都给我这个错误:
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 /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:499
Stack trace:
#0 /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/View/View.php(205): Zend\View\Renderer\PhpRenderer->render(Object(Zend\View\Model\ViewModel))
#1 /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/View/View.php(233): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#2 /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/View/View.php(198): Zend\View\View->renderChildren(Object(Zend\View\Model\ViewModel))
#3 /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/Mvc/View/Http/DefaultRenderingStrategy.php(102): Zend\View\View->render(Object(Zend\View\Model\ViewModel))
#4 [internal function]: Zend\Mvc\View in /opt/lampp/htdocs/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php** on line 499
我觉得我必须在某个地方遗失某些东西,但我似乎无法找到它。 我会喜欢一些帮助/建议。感谢。
答案 0 :(得分:4)
ZF2 Skeleton Application在Module.php的onBootstrap()方法中提供了一些基本的自举操作,例如将$eventManager
实例附加到 ModuleRouteListener ,也代表了一些基本的初始设置在module.config.php。
在删除Application
模块之前,不要忘记在RestModule中执行相同的操作。
如果您将view_manager
设置从应用模块的module.config.php
迁移到了RestModule的设置,请确保它有三个与错误情况相关的重要密钥:
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array('
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),
由于此键表示正确呈现异常和其他错误的视图路径,因此您必须将Application/view/error
和Application/view/layout
文件夹移动到RestModule中,或更改这些设置以满足您的需要。
在这些小细节之后,删除由骨架应用程序提供的应用程序模块没有任何问题。