symplify/modular-routing

此包已废弃,不再维护。作者建议使用symplify/framework-bundle包代替。
此包最新版本(v2.0.0-RC3)没有可用的许可证信息。

使用简单的服务加载Symfony路由。

v2.0.0-RC3 2017-04-28 19:16 UTC

README

Build Status Downloads

要添加路由,通常需要在app/config/routing.yml中添加几行。如果您有超过几十个模块,很容易在其中迷失方向。要了解包括此包在内的所有选项,请阅读这篇文章

有了这个路由器,您可以通过服务加载器轻松添加它们.

安装

composer require symplify/modular-routing

将包添加到AppKernel.php

final class AppKernel extends Kernel
{
    public function registerBundles(): array
    {
        $bundles = [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Cmf\Bundle\RoutingBundle\CmfRoutingBundle(),
            new Symplify\ModularRouting\SymplifyModularRoutingBundle(),
            // ...
        ];
    }
}

使用

  1. 实现RouteCollectionProviderInterface

    use Symfony\Component\Routing\Route;
    use Symfony\Component\Routing\RouteCollection;
    use Symplify\ModularRouting\Contract\Routing\RouteCollectionProviderInterface;
    
    final class SomeRouteCollectionProvider implements RouteCollectionProviderInterface
    {
        public function getRouteCollection() : RouteCollection
        {
            $routeCollection = new RouteCollection();
            $routeCollection->add('my_route', new Route('/hello'));
    
            return $routeCollection;
        }
    }
  2. 注册服务

    services:
        some_module.route_provider:
            class: SomeModule\Routing\SomeRouteCollectionProvider
            autowire: true # or better use Symplify\DefaultAutowire package

这就完成了!

加载YML/XML文件

如果您想加载这些文件,只需使用带有辅助方法的AbstractRouteCollectionProvider

use Symfony\Component\Routing\RouteCollection;
use Symplify\ModularRouting\Routing\AbstractRouteCollectionProvider;

final class FilesRouteCollectionProvider extends AbstractRouteCollectionProvider
{
    public function getRouteCollection(): RouteCollection
    {
        return $this->loadRouteCollectionFromFiles([
            __DIR__ . '/routes.xml',
            __DIR__ . '/routes.yml',
        ]);
        
        // on in case you have only 1 file
        // return $this->loadRouteCollectionFromFile(__DIR__ . '/routes.yml');
    }
}

贡献

向主仓库发送问题拉取请求