Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework mvc 什么';创建没有默认路由器的ZF3应用程序的最佳方法是什么?_Zend Framework Mvc_Zend Framework3 - Fatal编程技术网

Zend framework mvc 什么';创建没有默认路由器的ZF3应用程序的最佳方法是什么?

Zend framework mvc 什么';创建没有默认路由器的ZF3应用程序的最佳方法是什么?,zend-framework-mvc,zend-framework3,Zend Framework Mvc,Zend Framework3,我制作了一个Zend Framework 3 MVC应用程序。我不想要默认路由器。我的一个控制器是RESTFUL的,只返回JSON。我想删除默认的IndexController。我只想给出一个404错误。我不想把任何路线称为“家”,但如果有必要,我会这样做 如果我使我的路线配置如下所示: 'router' => [ 'routes' => [ 'myRoute' => [ 'type' => Segment::clas

我制作了一个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。

我只是放置了一个带有默认路由的IndexController,该路由现在呈现defautl 404页面。我将在某个时候让它返回Json,当我弄清楚如何返回时

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

我只是放了一个带有默认路由的IndexController来呈现Defautl404页面,我会让它在某个时候返回JSON,当我弄明白怎么做的时候

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

我不确定这是否是您需要的,但要从控制器返回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响应


希望这能有所帮助。

我不确定这是否是您需要的,但我希望您的控制器返回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响应

希望这有帮助