配置参考
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 控制器引用。
如果CoreBundle 和 ContentBundle (不再维护) 已注册,则默认为 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()
返回一个对象时,要使用的控制器。检查此对象是否为该映射中类名的 instanceof
。instanceof
用于代替直接比较,以处理代理类和其他扩展类。指定类的顺序很重要。采用第一个匹配项。
如果匹配,控制器将设置为 _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()
返回一个对象时,要使用的模板。检查此对象是否为该映射中类名的 instanceof
。instanceof
用于代替直接比较,以处理代理类和其他扩展类。指定类的顺序很重要。采用第一个匹配项。
如果匹配,模板将在默认值中设置为 _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 以禁用初始化器。
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
。
注意
如果启用了 PHPCR,则此设置将默认为一个通用的 PHPCR 内容存储库,该存储库尝试将内容 ID 用作 PHPCR 路径。ORM 目前没有内容存储库。
url_generator
类型: string
默认值: cmf_routing.generator
DynamicRouter 从 Route 对象生成 URL 的服务 id。如果您需要自定义该服务,请覆盖为实现 UrlGeneratorInterface
的服务。
limit_candidates
类型: integer
默认值: 20
使用此标志,您可以在使用数据库中存储的路由的动态模式部分时调整路由行为。如果您从不使用 Route 模型的变量模式字段,则可以将其设置为 1 以进行小的性能优化。如果您有非常复杂的带有模式的 URL,则可能需要增加限制。
注意
将此值设置得更高会使您的站点更容易受到负载攻击,当有人访问您的站点时,URL 中包含大量斜杠,因为每个斜杠都会导致尝试加载文档。
match_implicit_locale
类型: boolean
默认值: true
路由提供程序是否应查找不带语言环境的路由。
例如,当 locales
为 de
和 en
且请求的 url 为 de/my/path
时,路由提供程序不仅会查找 de/my/path
、de/my
和 de
,还会查找 my/path
和 my
。这允许为多种语言使用单个路由。例如,SimpleCmsBundle(不再维护)使用了此功能。
如果您不需要此功能,禁用该选项将获得一些性能提升。
auto_locale_pattern
类型: boolean
默认值: false
如果启用此选项,LocaleListener 将确保静态模式中没有语言环境的路由获得 auto_locale_pattern
选项设置。
注意
启用此选项将阻止您拥有任何匹配不带语言环境的 URL 的 CMF 路由。
如果没有配置 locales
,则会忽略此项。当禁用 match_implicit_locale
时,启用此选项毫无意义。