libero/content-negotiation-bundle

此包已被废弃,不再维护。没有建议的替代包。

为您的Symfony应用程序添加内容协商

安装: 681

依赖关系: 1

建议者: 1

安全性: 0

星级: 0

关注者: 4

分支: 1

类型:symfony-bundle

v0.1.0 2018-12-07 14:44 UTC

This package is auto-updated.

Last update: 2020-02-07 21:07:44 UTC


README

Build Status

这是一个 Symfony 扩展包,通过集成 Negotiation 库,将为您的应用程序添加 内容协商 功能。

入门

使用 Composer 将该包作为依赖项添加

composer require libero/content-negotation-bundle

如果您不使用 Symfony Flex,您需要在应用程序中启用该包。

基于路径的协商

您可以通过配置将协商添加到路径中。

例如,要为精确路径添加XML或JSON以及英语或法语的要求,在其他地方添加纯文本和德语

content_negotiation:
    formats:
        - path: ^/path/to/my/page$
          priorities: xml|json
        - path: ^/
          priorities: txt
    locales:
        - path: ^/path/to/my/page$
          priorities: en|fr
        - path: ^/
          priorities: de

formatslocales 项目按顺序运行。首先匹配的项目将被使用。

priorities 可以为空,允许在较低级别禁用协商。例如,要求除 /foo 之外的所有地方都使用英语

content_negotiation:
    formats:
        - path: ^/foo($|/)
          priorities:
        - path: ^/
          priorities: en

optional 可设置为 true 以允许回退到后续匹配。例如,要要求除 /foo 之外的所有地方都使用英语,在 /foo 下允许德语或英语

content_negotiation:
    formats:
        - path: ^/foo($|/)
          priorities: de
          optional: true
        - path: ^/
          priorities: en

路由级别的协商

您可以通过添加 _format 和/或 _locale 的要求在路由级别添加协商。

这些要求必须是一个由竖线分隔的可能性的列表。

例如,要为路由添加XML或JSON以及英语或法语的要求

my_route:
    path: /path/to/my/page
    controller: App\Controller\PageController
    requirements:
        _format: xml|json
        _locale: en|fr

路由级别的协商优先于基于路径的协商。

获取帮助