簡體   English   中英

沒有命名參數的Symfony通配符主機路由

[英]Symfony wildcard host route with no named parameter

我想在一個 Symfony 4 應用程序中托管 2 個不同的域,所以我使用@Routehost參數來聲明每個頁面所屬的域:

/**
 * @Route("/foo", name="foo", host="example.com")
 */

這很好用; 但是,對於我的本地開發服務器,我通常會使用example.dev類的域。 所以路由需要匹配多個擴展。 為此,我嘗試使用命名占位符:

/**
 * @Route("/foo", name="foo", host="example.{ext}")
 */

這適用於路由,但不適用於 URL 生成。 例如,如果 Twig 模板嘗試使用{{ path('foo') }} ,我現在會收到以下錯誤:

缺少一些必需參數(“ext”)來為路由“foo”生成 URL。

有沒有辦法為主機添加通配符,同時仍然允許在不傳遞參數的情況下生成路由?

我知道這個問題聽起來很奇怪,因為路由必須是雙向的,但是當一個人需要一個具有不同域的開發環境時,這通常如何處理?

有沒有辦法為ext參數提供全局默認值?

找到了:

/**
 * @Route("/foo", name="foo", host="example.{ext}", defaults={"ext": "%ext%"})
 */

並在config/services.yamlconfig/services.yaml默認值:

parameters:
    ext: 'com'

或者更好的是,使用常量:

parameters:
    ext: '%env(DOMAIN_EXT)%'

並根據需要在.env和/或.env.local定義它:

DOMAIN_EXT=com

選擇

允許整個主機可配置可能會更好。 在這種情況下,它看起來像:

/**
 * @Route("/foo", name="foo", host="%domain.name%")
 */

和上面一樣,在config/services.yaml配置域名,有或沒有常量:

parameters:
    domain.name: '%env(DOMAIN_NAME)%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM