l'application Mon Zend Framework 3 gère les commandes:Comment rediriger dans le module et restreindre l'accès sans quitter() dans ZF3?
- Chaque utilisateur peut rendre une ordonnance.
- Chaque utilisateur peut voir n'importe quelle commande.
- Chaque utilisateur peut éditer sa commande s'il est le créateur de cette commande. Sinon, il obtiendra le code d'état et sera redirigé vers la page correspondante.
Mis en œuvre dans le MyModule\Module#onRoute(...)
comme suit:
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) {
...
}
}
Il travaille. Mais maintenant, j'écris des tests d'intégration et cet appel exit()
les brise.
Quelle est l'alternative à la exit()
à cet endroit et un moyen propre/propre de redirection dans la classe Module
?