netbull/routing-bundle

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

安装: 4

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2019-01-04 08:35 UTC

This package is auto-updated.

Last update: 2024-09-04 20:58:02 UTC


README

Build Status

要添加路由,通常需要在 config/routing.yml 文件中添加几行。

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

步骤 1: 下载 Bundle

打开命令行,进入您的项目目录,并执行以下命令以下载此 Bundle 的最新稳定版本

$ composer require netbull/routing-bundle

此命令需要您全局安装 Composer,如 Composer 文档中的 安装章节 所述。

步骤 2: 启用 Bundle

然后,通过将其添加到项目中 app/AppKernel.php 文件中注册的 Bundle 列表来启用该 Bundle

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new NetBull\RoutingBundle\NetBullRoutingBundle(),
        );

        // ...
    }

    // ...
}

用法

  1. 实现 RouteCollectionProviderInterface

    use Symfony\Component\Routing\Route;
    use Symfony\Component\Routing\RouteCollection;
    use NetBull\RoutingBundle\Routing\RouteCollectionProviderInterface;
    
    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

这就完成了!

加载 YML/XML 文件

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

use Symfony\Component\Routing\RouteCollection;
use NetBull\RoutingBundle\Routing\AbstractRouteCollectionProvider;

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