跳到内容

配置参考

编辑此页

RoutingBundle 可以在您的应用程序配置中的 cmf_routing 键下进行配置。当使用 XML 时,您可以使用 http://cmf.symfony.com/schema/dic/routing 命名空间。

配置

chain

routers_by_id

原型: array 默认值: { router.default: 100 }

这定义了链中要使用的路由器。默认情况下,仅使用 Symfony 路由器。键是服务的名称,值是优先级。链从最高优先级到最低优先级排序。

要添加 DynamicRouter,请使用以下配置

1
2
3
4
5
6
# app/config/packages/cmf_routing.yaml
cmf_routing:
    chain:
        routers_by_id:
            cmf_routing.dynamic_router: 200
            router.default:             100

提示

您还可以使用服务上的 cmf_routing.router 标签将路由器添加到链中,在“RoutingBundle”中了解更多信息。

replace_symfony_router

类型: Boolean 默认值: true

如果此选项设置为 false,默认的 Symfony 路由器将 *不会* 被 ChainRouter 覆盖。默认情况下,ChainRouter 将覆盖默认的 Symfony 路由器,但它会将所有请求传递给默认路由器,因为没有设置其他路由器

1
2
3
4
# app/config/packages/cmf_routing.yaml
cmf_routing:
    chain:
        replace_symfony_router: true

dynamic

enabled

类型: Boolean 默认值: false

使用此设置激活 DynamicRouter。这将创建一个 cmf_routing.dynamic_router 服务,您可以将其添加到链中。

generic_controller

类型: string 默认值: null

此配置指定了当路由增强器定义模板但没有显式控制器时使用的控制器。它接受任何有效的 Symfony 控制器引用。

如果CoreBundleContentBundle (不再维护) 已注册,则默认为 cmf_content.controller::indexAction

default_controller

类型: string 默认值: generic_controller 的值

如果没有增强器找到控制器,则使用的默认控制器。接受任何有效的 Symfony 控制器引用。

controllers_by_type

原型: array

如果匹配的路由在其默认值中有一个 type 值,并且没有设置显式控制器,则该路由由为该类型配置的控制器处理

1
2
3
4
5
# app/config/packages/cmf_routing.yaml
cmf_routing:
    dynamic:
        controllers_by_type:
            editable:   AppBundle:Cms:editable

controllers_by_class

原型: array

当匹配的路由实现 RouteObjectInterface 并为 getRouteContent() 返回一个对象时,要使用的控制器。检查此对象是否为该映射中类名的 instanceofinstanceof 用于代替直接比较,以处理代理类和其他扩展类。指定类的顺序很重要。采用第一个匹配项。

如果匹配,控制器将设置为 _controller,使 Symfony 选择此控制器来处理请求。

1
2
3
4
5
# app/config/packages/cmf_routing.yaml
cmf_routing:
    dynamic:
        controllers_by_class:
            Symfony\Cmf\Bundle\ContentBundle\Document\StaticContent: cmf_content.controller::indexAction

template_by_class

原型: array

当路由实现 RouteObjectInterface 并为 getRouteContent() 返回一个对象时,要使用的模板。检查此对象是否为该映射中类名的 instanceofinstanceof 用于代替直接比较,以处理代理类和其他扩展类。指定类的顺序很重要。采用第一个匹配项。

如果匹配,模板将在默认值中设置为 _template,除非另一个映射指定了一个控制器,否则 generic_controller 设置将设置为控制器。

1
2
3
4
5
# app/config/packages/cmf_routing.yaml
cmf_routing:
    dynamic:
        templates_by_class:
            Symfony\Cmf\Bundle\ContentBundle\Document\StaticContent: CmfContentBundle:StaticContent:index.html.twig

route_collection_limit

类型: scalar, 默认值: 0

如果此值设置为大于 0 的数字,则 getRouteCollection() 方法返回从数据库读取的路由集合。该限制用于防止在您拥有大型数据库时出现巨大的路由列表。将限制设置为 false 将完全禁用该限制,并尝试返回所有路由。

persistence

phpcr
1
2
3
4
5
6
7
8
9
10
11
# app/config/packages/cmf_routing.yaml
cmf_routing:
    dynamic:
        persistence:
            phpcr:
                enabled:      false
                manager_name: ~
                route_basepaths:
                    - /cms/routes
                    - /cms/simple
                enable_initializer: true
enabled

类型: boolean 默认值: false

如果为 true,则在服务容器中启用 PHPCR。

如果CoreBundle 已注册,这将默认为 cmf_core.persistence.phpcr.enabled 的值。

可以通过多种方式启用 PHPCR,例如

1
2
3
4
5
6
phpcr: ~ # use default configuration
# or
phpcr: true # straight way
# or
phpcr:
    manager: ... # or any other option under 'phpcr'
manager_name

类型: string 默认值: null

要使用的 Doctrine 管理器的名称。null 告诉管理器注册表检索默认管理器。

如果CoreBundle 已注册,这将默认为 cmf_core.persistence.phpcr.manager_name 的值。

route_basepaths

类型: string | array 默认值: /cms/routes

一组路径,路由位于 PHPCR 树中。

如果CoreBundle 已注册,这将默认为 %cmf_core.persistence.phpcr.basepath%/routes

enable_initializer

类型: boolean 默认值: true

该 bundle 带有一个初始化器,当初始化存储库或加载 fixtures 时,它会自动为所有 route_basepaths 根创建必要的节点。有时这不是您想要的,因为创建的节点类型为 'Generic',您可能希望文档成为路由(对于主页)。如果您在自己的 PHPCR ODM 存储库初始化器中自己创建节点,请将其设置为 false 以禁用初始化器。

orm
enabled

类型: boolean 默认值: false

如果为 true,ORM 将包含在服务容器中。

manager_name

类型: string 默认值: null

要使用的 Doctrine 管理器的名称。

route_class

类型: string 默认值: 'Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Orm\Route'

在您的应用程序中使用的路由类。

uri_filter_regexp

类型: string 默认值: ""

设置 Route 必须匹配的模式,然后才能尝试从数据库中获取任何路由。当您的站点仅有一部分使用动态路由器时,这可以大大提高性能。

route_provider_service_id

类型: string

当没有启用持久层时,*必须* 提供路由提供程序服务才能获取路由。这通过使用 route_provider_service_id 设置来完成。

route_filters_by_id

原型: array

这配置了用于过滤路由集合的路由过滤器。键是服务的 id,值是优先级。过滤器从最高优先级到最低优先级排序。

1
2
3
4
5
# app/config/packages/cmf_routing.yaml
cmf_routing:
    dynamic:
        route_filters_by_id:
            app.routing_filter: 100

content_repository_service_id

类型: scalar 默认值: null

路由指定内容的一种方法是通过指定内容 ID。负责的路由增强器向此处指定的内容存储库请求内容。存储库必须实现 Symfony\Cmf\Component\Routing\ContentRepositoryInterface

注意

如果启用了 PHPCR,则此设置将默认为一个通用的 PHPCR 内容存储库,该存储库尝试将内容 ID 用作 PHPCR 路径。ORM 目前没有内容存储库。

url_generator

类型: string 默认值: cmf_routing.generator

DynamicRouter 从 Route 对象生成 URL 的服务 id。如果您需要自定义该服务,请覆盖为实现 UrlGeneratorInterface 的服务。

locales

类型: array 默认值: []

要启用多语言,请在此选项中设置有效的语言环境。

如果CoreBundle 已注册,这将默认为 cmf_core.locales 的值。

limit_candidates

类型: integer 默认值: 20

使用此标志,您可以在使用数据库中存储的路由的动态模式部分时调整路由行为。如果您从不使用 Route 模型的变量模式字段,则可以将其设置为 1 以进行小的性能优化。如果您有非常复杂的带有模式的 URL,则可能需要增加限制。

注意

将此值设置得更高会使您的站点更容易受到负载攻击,当有人访问您的站点时,URL 中包含大量斜杠,因为每个斜杠都会导致尝试加载文档。

match_implicit_locale

类型: boolean 默认值: true

路由提供程序是否应查找不带语言环境的路由。

例如,当 localesdeen 且请求的 url 为 de/my/path 时,路由提供程序不仅会查找 de/my/pathde/myde,还会查找 my/pathmy。这允许为多种语言使用单个路由。例如,SimpleCmsBundle(不再维护)使用了此功能。

如果您不需要此功能,禁用该选项将获得一些性能提升。

auto_locale_pattern

类型: boolean 默认值: false

如果启用此选项,LocaleListener 将确保静态模式中没有语言环境的路由获得 auto_locale_pattern 选项设置。

注意

启用此选项将阻止您拥有任何匹配不带语言环境的 URL 的 CMF 路由。

如果没有配置 locales,则会忽略此项。当禁用 match_implicit_locale 时,启用此选项毫无意义。

本作品,包括代码示例,均根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本