首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有默认路由器的情况下制作ZF3应用程序的最佳方法是什么?

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

Stack Overflow用户
提问于 2017-03-06 13:18:13
回答 2查看 440关注 0票数 1

我制作了一个ZendFramework3MVC应用程序。我不想要默认路由器。我的一个控制器RESTFUL并且只返回JSON。我想删除默认的IndexController。我想/只给一个404错误。我不想叫任何路线“回家”,但如果必要的话,我会这样做的。

如果我使我的路由配置看起来如下:

代码语言:javascript
复制
'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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-06 14:04:38

我只是放置了一个默认路由的IndexController,该路径目前呈现的是defautl 404页面。当我知道如何返回JSON时,我会让它返回JSON。

代码语言:javascript
复制
class IndexController extends AbstractRestfulController
{
    public function indexAction()
    {
        $this->response->setStatusCode(Response::STATUS_CODE_404);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-16 05:51:55

我不知道这是否是您的后续,但返回一个json响应从您的控制器使用。

在模块配置中:

代码语言:javascript
复制
'view_manager' => array(
    'strategies' => array(
       'ViewJsonStrategy',
    ),
},

在你的控制器里:

代码语言:javascript
复制
use Zend\View\Model\JsonModel;
// ...
public function indexAction()
{
    $this->response->setStatusCode(Response::STATUS_CODE_404);
    $view = new JsonModel();
    $view->jsonVariable = 'someValue';
    return $view;
}

这将返回一个json响应。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42626684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档