requestum/router-decoration-bundle

此包的最新版本(dev-master)没有提供许可证信息。

Symfony RequestumRouterDecorationBundle

dev-master 2016-07-25 10:53 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:27:32 UTC


README

这是一个创建于2016年7月19日,下午3:27的Symfony Bundle。

Bundle提供了自动替换路由参数值到预定义系统值的能力。

安装

通过Composer

composer require requestum/router-decoration-bundle

new Requestum\RouterDecorationBundle\RequestumRouterDecorationBundle() 添加到您的 app/AppKernel.php 文件中。

<?php
// app/AppKernel.php

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

            new Requestum\RouterDecorationBundle\RequestumRouterDecorationBundle(),
        );

        // ...
    }

    // ...
}

配置

要在您的应用程序中配置Bundle,您必须在配置文件中添加特定格式的代码

# Requestum Router Decorator Configuration
requestum_router_decoration:
      parameters_mapper:
            pattern: mask
            map:
                  <route mask 1>:
                        <parameter name 1>:
                            <route value 1>: <system value 1>
                            ...
                            <route value n>: <system value n>
                        ...
                        <parameter name n>
                  ...
                  <route mask n>:

文档

默认情况下,如果配置文件中未指定pattern,Bundle使用模式掩码输入。如果您想在路由掩码配置中使用正则表达式,您必须在pattern选项中键入'regexp'。

如果您使用mask模式,您必须遵循以下示例

...
    pattern: mask
    map:
          #Route names 'route_name_' that has any sufix
          route_name_*:
                ...
          
          #Route names 'route_name_' that has any prefix
          *_route_name:
                ...
                
          #Route names that has 'route_' prefix and '_name' sufix                    
          route_*_name:
                ...

如果您使用regexp模式,您只需要编写一些正则表达式,例如这样

...
    pattern: regexp
    map:
          #Route names 'route_name_' that has any sufix
          /route_name_.*/:
                ...
          
          #Route names 'route_name_' that has any prefix
          /.*_route_name/:
                ...
                
          #Route names that has 'route_' prefix and '_name' sufix                    
          /route_.*_name/:
                ...

高级

如果您想定义一些用于参数映射的自定义装饰器,您只需定义您自己的服务并使用requestum.router_decorator标签标记它们,但您自己的服务必须扩展AbstractRouterDecorator

如果您想使用自己的映射策略,您只需定义新的服务并在pattern选项中指定它们的标识符,但您自己的策略必须实现PatternStrategyInterface