我的Zend Framework 3应用程序管理订单:如何在模块内重定向,并在ZF3中限制访问而不退出()?
- 每个用户都可以下订单。
- 每个用户都可以看到任何订单。
- 如果他是该订单的创建者,每个用户都可以编辑他的订单。否则,他会得到状态码
403
并被重定向到相应的页面。
实现在MyModule\Module#onRoute(...)
如下:
public function onRoute(EventInterface $event)
{
if ($event->getRequest() instanceof HttpRequest) {
...
if (! $acl->isAllowed($role, $controller, $action)) {
/** @var Response $response */
$response = $event->getResponse();
$config = $serviceManager->get('config');
$redirectRoute = ! empty($config['acl']['redirect_route']) ? $config['acl']['redirect_route'] : null;
if (! empty($redirectRoute)) {
$url = $event->getRouter()->assemble($redirectRoute['params'], $redirectRoute['options']);
$response->getHeaders()->addHeaderLine('Location', $url);
$response->setStatusCode(Response::STATUS_CODE_403);
$response->sendHeaders();
exit(); // <-- this makes the code untestable
} else {
...
}
}
} elseif ($event->getRequest() instanceof ConsoleRequest) {
...
}
}
它的工作。但现在,我正在编写集成测试,并且这个调用会打破它们。
什么是在这个地方的替代exit()
和重定向的Module
类中的一个适当的/干净的方式?