php - Zend Expressive 中的 FastRoute 组

标签 php zend-framework zend-framework3 mezzio

我想在 Expressive 中为 FastRoute 使用路由组。 喜欢 sample :

$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);  
});

我按照文档中的描述创建了工厂 ( 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,因为它共享相同的配置键。

关于php - Zend Expressive 中的 FastRoute 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44094307/

相关文章:

php - 同一张表上的 SQL JOIN 返回重复结果

php - Doctrine2 更新导致 Zend Framework 3 中 AnnotationRegistry registerLoader 错误

zend-framework-mvc - ZF3 zend-mvc 一个模块中许多 Controller 的通用路由不起作用

php - zend 框架 3 session 不工作

javascript - 使用 JavaScript 将新行添加到表时重置输入字段

php - 主页登录表单 - Wordpress

java - 似乎 <br 正在进入我的 JSON 响应

php - 禅德 : get Url parameter from inside Zend_Form

mysql - Zend 框架中的 ORDER BY FIELD(orderNum, 1,2,0)

php - Youtube API PHP Zend GData 直接上传