我制作了一个ZendFramework3MVC应用程序。我不想要默认路由器。我的一个控制器RESTFUL并且只返回JSON。我想删除默认的IndexController。我想/只给一个404错误。我不想叫任何路线“回家”,但如果必要的话,我会这样做的。
如果我使我的路由配置看起来如下:
'router' => [
'routes' => [
'myRoute' => [
'type' => Segment::class,
'options' => [
'route' => '/myThing[/:action]',
'defaults' => [
'controller' => Controller\MyThingController::class,
'action' => 'index',
],
],
],
],
],当我连接到一个在浏览器中保留默认索引控制器时工作的路由时,我会得到以下异常:
致命错误: Uncaught \ line \Exception\RuntimeException:在第354行的/var/www/vendor/zendframework/zend-router/src/Http/TreeRouteStack.php中找不到名为"home“的路由
如果我将'myRoute' => [更改为'home' => [,它将呈现默认布局,而不是由JsonViewModel呈现的Json。
发布于 2017-03-06 14:04:38
我只是放置了一个默认路由的IndexController,该路径目前呈现的是defautl 404页面。当我知道如何返回JSON时,我会让它返回JSON。
class IndexController extends AbstractRestfulController
{
public function indexAction()
{
$this->response->setStatusCode(Response::STATUS_CODE_404);
}
}发布于 2018-06-16 05:51:55
我不知道这是否是您的后续,但返回一个json响应从您的控制器使用。
在模块配置中:
'view_manager' => array(
'strategies' => array(
'ViewJsonStrategy',
),
},在你的控制器里:
use Zend\View\Model\JsonModel;
// ...
public function indexAction()
{
$this->response->setStatusCode(Response::STATUS_CODE_404);
$view = new JsonModel();
$view->jsonVariable = 'someValue';
return $view;
}这将返回一个json响应。
希望这能有所帮助。
https://stackoverflow.com/questions/42626684
复制相似问题