首页 文章

制作没有默认路由器的ZF3应用程序的最佳方法是什么?

提问于
浏览
1

我制作了Zend Framework 3 MVC应用程序 . 我不想要默认路由器 . 我的一个控制器RESTFUL,只返回JSON . 我想删除默认的IndexController . 我想/只是给出404错误 . 我不想把任何路线称为“回家”,但如有必要,我会这样做 .

如果我使我的路由配置看起来像这样:

'router' => [
    'routes' => [
        'myRoute' => [
            'type'    => Segment::class,
            'options' => [
                'route'    => '/myThing[/:action]',
                'defaults' => [
                    'controller' => Controller\MyThingController::class,
                    'action'     => 'index',
                ],
            ],
        ],
    ],
],

当我连接到在浏览器中保留默认索引控制器时工作的路由时,我收到以下异常:

致命错误:未捕获的Zend \ Router \ Exception \ RuntimeException:在第354行的/var/www/vendor/zendframework/zend-router/src/Http/TreeRouteStack.php中找不到名称为“home”的路由

如果我将 'myRoute' => [ 更改为 'home' => [ 它将呈现默认布局而不是JsonViewModel呈现的Json .

2 回答

  • 0

    我只是将一个IndexController与一个默认路由放在一起,现在呈现defautl 404页面 . 当我弄清楚如何时,我会在某些时候让它返回JSON .

    class IndexController extends AbstractRestfulController
    {
        public function indexAction()
        {
            $this->response->setStatusCode(Response::STATUS_CODE_404);
        }
    }
    
  • 0

    我不确定这是不是你的事情,但是从你的控制器使用中返回一个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响应 .

    希望这可以帮助 .

相关问题