php - symfony2 路由中带点的图案

标签 php regex symfony

我有 2 个 bundle :一个用于我的网站,另一个用于我的 API。我的 API URL 是 mywebsite,我的网站 URL 是 www.website.com

我使用 host 参数按主机过滤路由,并且我希望在我的 bundle 之一上允许 localhost 进行本地开发(无需创建虚拟主机)。

但出现此错误:

Parameter "domain" for route "tv_home" must match "[^\.]++" ("((www\.)?mywebsite\.fr|localhost)" given) to generate a corresponding URL.

我知道它来 self 在这里使用的正则表达式:

domain: "((www\.)?mywebsite\.fr|localhost)"

如果我不能在此正则表达式中使用点,我该如何实现我的目标?

这是我的主路由文件:

tv_api:
    resource: "@TVApiBundle/Resources/config/routing.yml"
    host:     "api.mywebsite.fr"
    prefix:   /

tv_site:
    resource: "@TVSiteBundle/Resources/config/routing.yml"
    host:     "{domain}"
    defaults:
            domain: "((www\.)?mywebsite\.fr|localhost)"
    prefix:   /

问候,

最佳答案

默认域值不影响路由是否匹配。由于域如果始终出现在请求中,则它仅对生成 URL 有用。为此目的有一些要求(顺便说一句,[^.]++ 将是域的默认要求)。

tv_site:
    resource: "@TVSiteBundle/Resources/config/routing.yml"
    host:     "{domain}"
    defaults:
        domain: "mywebsite.fr"
    requirements:
        domain: "((www\.)?mywebsite\.fr|localhost)"
    prefix:   /

它应该可以工作。但所有路由都将使用 mywebsite.fr 生成(如果是绝对 url)。您可以使用服务容器参数。

tv_site:
    resource: "@TVSiteBundle/Resources/config/routing.yml"
    host:     "{domain}"
    defaults:
        domain: "%domain%"
    requirements:
        domain: "((www\.)?mywebsite\.fr|localhost)"
    prefix:   /

作为示例,定义此参数的最简单方法是在parameter.yml 中。或者我认为你也可以完全省略默认键。

关于php - symfony2 路由中带点的图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29112100/

相关文章:

python - Scrapy 提取脚本值

javascript 正则表达式从 config.php 字符串中提取路径

zend-framework - 在doctrine2中是否可以有一个不是主键的自动增量列?

symfony - 如何将 Twig 表达式作为参数传递给模板,然后使用模板的上下文执行它?

php - Symfony2-显示错误的凭证错误

php - 使用外键插入数据库

javascript - PHP 将特定内容发布到 facebook

php - 将 JSON 数据插入 MySQL

java - 正则表达式在比赛后获得 n 行

php - Mysql/PHP 准备语句中按 rand ($foo) 排序/防止 SQL 注入(inject)