制作没有默认路由器的 ZF3 应用程序的最佳方法是什么?
What's the best way to make a ZF3 application with no default router?
我制作了一个 Zend Framework 3 MVC 应用程序。我不想要默认路由器。我的一个控制器 RESTFUL 只返回 JSON。我想删除默认的 IndexController。我想 / 只给出 404 错误。我不想调用任何路由 'home',但如有必要会调用。
如果我的路由配置如下所示:
'router' => [
'routes' => [
'myRoute' => [
'type' => Segment::class,
'options' => [
'route' => '/myThing[/:action]',
'defaults' => [
'controller' => Controller\MyThingController::class,
'action' => 'index',
],
],
],
],
],
当我连接到在我的浏览器中保留默认索引控制器时有效的路由时,出现以下异常:
Fatal error: Uncaught Zend\Router\Exception\RuntimeException: Route with name "home" not found in /var/www/vendor/zendframework/zend-router/src/Http/TreeRouteStack.php on line 354
如果我将 'myRoute' => [
更改为 'home' => [
它会呈现默认布局,而不是 JsonViewModel 呈现的 Json。
我只是放置了一个带有默认路由的索引控制器,该路由暂时呈现默认的 404 页面。当我弄清楚怎么做时,我会在某个时候做到 return JSON。
class IndexController extends AbstractRestfulController
{
public function indexAction()
{
$this->response->setStatusCode(Response::STATUS_CODE_404);
}
}
我不确定这是否是您想要的,但是 return 来自您的控制器使用的 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;
}
这将 return 一个 json 响应。
希望对您有所帮助。
我制作了一个 Zend Framework 3 MVC 应用程序。我不想要默认路由器。我的一个控制器 RESTFUL 只返回 JSON。我想删除默认的 IndexController。我想 / 只给出 404 错误。我不想调用任何路由 'home',但如有必要会调用。
如果我的路由配置如下所示:
'router' => [
'routes' => [
'myRoute' => [
'type' => Segment::class,
'options' => [
'route' => '/myThing[/:action]',
'defaults' => [
'controller' => Controller\MyThingController::class,
'action' => 'index',
],
],
],
],
],
当我连接到在我的浏览器中保留默认索引控制器时有效的路由时,出现以下异常:
Fatal error: Uncaught Zend\Router\Exception\RuntimeException: Route with name "home" not found in /var/www/vendor/zendframework/zend-router/src/Http/TreeRouteStack.php on line 354
如果我将 'myRoute' => [
更改为 'home' => [
它会呈现默认布局,而不是 JsonViewModel 呈现的 Json。
我只是放置了一个带有默认路由的索引控制器,该路由暂时呈现默认的 404 页面。当我弄清楚怎么做时,我会在某个时候做到 return JSON。
class IndexController extends AbstractRestfulController
{
public function indexAction()
{
$this->response->setStatusCode(Response::STATUS_CODE_404);
}
}
我不确定这是否是您想要的,但是 return 来自您的控制器使用的 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;
}
这将 return 一个 json 响应。
希望对您有所帮助。