我的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
類中的一個適當的/乾淨的方式?