Open twn39 opened 5 years ago
zend expressive 已经实现了全面的模块化结构,按照官方教程,他的路由是写在config/routes.php文件里,这样的话路由并不是模块化的,通过delegators可以将路由写在每个模块的ConfigProvider.php里面。
首先需要在ConfigProvider.php的dependencies加载delegators,额外添加:
'invokables' => [ Handler\LogoutHandler::class => Handler\LogoutHandler::class, ], 'factories' => [ Handler\HomePageHandler::class => Handler\HomePageHandlerFactory::class, ContactHandler::class => function (ContainerInterface $container) { $template = $container->get(TemplateRendererInterface::class); return new ContactHandler($template); }, ], 'delegators' => [ \Zend\Expressive\Application::class => [ \Zend\Expressive\Container\ApplicationConfigInjectionDelegator::class, ], ],
然后在配置项添加routes:
'dependencies' => $this->getDependencies(), 'templates' => $this->getTemplates(), 'routes' => [ [ 'path' => '/contact', 'middleware' => ContactHandler::class, 'allowed_methods' => ['GET'], 'name' => 'contact', 'options' => [], ] ],
factory可以直接在ConfigProvider.php里写function,这样可以少建立一些factory文件
zend expressive 已经实现了全面的模块化结构,按照官方教程,他的路由是写在config/routes.php文件里,这样的话路由并不是模块化的,通过delegators可以将路由写在每个模块的ConfigProvider.php里面。
首先需要在ConfigProvider.php的dependencies加载delegators,额外添加:
然后在配置项添加routes: