![](/img/trans.png)
[英]Zend Expressive 2 - REST API (JSON) - Versioning (in header) - FastRoute?
[英]FastRoute Groups in Zend Expressive
我想在Expressive中使用FastRoute的路由組。 像樣品:
$router = $app->getContainer()->get(FastRoute\RouteCollector::class);
$router->get('/', App\Action\HomePageAction::class);
$router->addGroup('/pages', function (FastRoute\RouteCollector $router) {
$router->get('', App\Action\PagesIndexAction::class);
$router->get('/add', App\Action\PagesAddAction::class);
$router->get('/edit/{id}', App\Action\PageEditActionFactory::class);
$router->post('/edit/{id}', App\Action\PageEditActionFactory::class);
$router->get('/another/{section}[/{subsection}]', PagesAnotherActionFactory::class);
});
我在docs中創建了工廠( https://docs.zendframework.com/zend-expressive/features/router/fast-route/#advanced-configuration )並在router.global.php
注冊它們:
// ...
'factories' => [
FastRoute\RouteCollector::class => App\Container\FastRouteCollectorFactory::class,
FastRoute\DispatcherFactory::class => App\Container\FastRouteDispatcherFactory::class,
Zend\Expressive\Router\RouterInterface::class => App\Container\RouterFactory::class,
],
// ...
現在我無法弄清楚在哪里編寫配置以及如何激活它。 可以在config/router.php
文件中完成嗎? 請幫幫我。
只要文件與配置的其余部分合並,您就可以將它們放在config.router.php
中。
'dependencies' => [
//..
'invokables' => [
/* ... */
// Comment out or remove the following line:
// Zend\Expressive\Router\RouterInterface::class => Zend\Expressive\Router\FastRouteRouter::class,
/* ... */
],
'factories' => [
/* ... */
// Add this line; the specified factory now creates the router instance:
FastRoute\RouteCollector::class => App\Container\FastRouteCollectorFactory::class,
FastRoute\DispatcherFactory::class => App\Container\FastRouteDispatcherFactory::class,
// Zend\Expressive\Router\RouterInterface::class => Zend\Expressive\Router\FastRouteRouterFactory::class, // replaced by following line
Zend\Expressive\Router\RouterInterface::class => App\Container\RouterFactory::class,
/* ... */
],
],
請注意dependencies
項鍵,並且您自己的RouterFactory
替換了FastRouteRouterFactory
因為它共享相同的配置鍵。
這不受支持 ,我不確定這是否可以在FastRoute中實現。
你可以檢查線程“ Zend router - child routes ”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.