[英]Symfony wildcard host route with no named parameter
我想在一個 Symfony 4 應用程序中托管 2 個不同的域,所以我使用@Route
的host
參數來聲明每個頁面所屬的域:
/**
* @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.yaml
中config/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.