0

I have 2 groups of routes (web and api):

enter image description here

Here is an web routes example:

return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container): void {

    $app->get('/', [
        Zend\Expressive\Session\SessionMiddleware::class,
        Zend\Expressive\Flash\FlashMessageMiddleware::class,
        User\Service\Auth\TemplateAuthMiddleware::class,
        Dev\Handler\IndexPageHandler::class
    ], 'home');

    $app->route('/auth/login', [
        Zend\Expressive\Session\SessionMiddleware::class,
        Zend\Expressive\Flash\FlashMessageMiddleware::class,
        User\Service\Auth\OnlyForGuestsMiddleware::class,
        User\Service\Auth\TemplateAuthMiddleware::class,
        User\Handler\LoginPageHandler::class
    ], ['GET', 'POST'], 'auth.login');


    $app->route('/auth/register', [
        Zend\Expressive\Session\SessionMiddleware::class,
        Zend\Expressive\Flash\FlashMessageMiddleware::class,
        User\Service\Auth\OnlyForGuestsMiddleware::class,
        User\Service\Auth\TemplateAuthMiddleware::class,
        User\Handler\ResetPageHandler::class
    ], ['GET', 'POST'], 'auth.register');

    ...
};

I noticed that many middleware are repeated. I want to group some middleware. For example:

'web' => [
    Zend\Expressive\Session\SessionMiddleware::class,
    Zend\Expressive\Flash\FlashMessageMiddleware::class,
    User\Service\Auth\TemplateAuthMiddleware::class,
]

I know that zend-expressive does not support widdleware groups like laravel5. Are there a beautiful grouping solution for this?

Nepster
  • 144
  • 6
  • Have you read this reference on nested middleware? https://framework.zend.com/blog/2017-03-15-nested-middleware-in-expressive.html – user2087816 Dec 15 '18 at 12:21
  • yes, but this article is old. Application is initialized differently: https://github.com/zendframework/zend-expressive/blob/master/src/Application.php#L44 Also, I'm not sure I want a new Application instance each time. – Nepster Dec 15 '18 at 13:46

0 Answers0