在 Symfony 中使用 @Route 注释我可以执行以下操作:
/**
* @Route({
* "en": "/{_locale}/registration",
* "de": "/{_locale}/registrierung",
* },
* name="registration",
* defaults={
* "_locale":"%kernel.default_locale%"
* },
* requirements={
* "_locale":"^[a-z]{2}?$"
* })
*/
public function defaultAction() { }
英语访问者可以调用www.mysite.com/en/registration
,德语访问者可以调用www.mysite.com/de/registrierung
。
是否可以为未明确声明的语言声明默认值?这样的路线例如es 或 fr 访问者的工作方式类似于 www.mysite.com/es/reg
或 www.mysite.com/fr/reg
?
伪代码:
/**
* @Route({
* "en": "/{_locale}/registration",
* "de": "/{_locale}/registrierung",
* "_default_": /{_locale}/reg"
* },
* name="registration",
* defaults={
* "_locale":"%kernel.default_locale%"
* },
* requirements={
* "_locale":"^[a-z]{2}?$"
* })
*/
public function defaultAction() { }
最佳答案
Currently不可能通过一个注释来做到这一点。 但是,您可以创建第二个回退操作。此外,它们可以按 priority 排序。 .
例子
/**
* @Route({
* "en": "/{_locale}/registration",
* "de": "/{_locale}/registrierung",
* },
* name="registration",
* defaults={
* "_locale":"%kernel.default_locale%"
* },
* priority="1",
* requirements={
* "_locale":"^[a-z]{2}?$"
* })
*/
public function defaultAction() {}
/**
* @Route("/{_locale}/registration",
* name="registration_fallback",
* priority="0",
* requirements={
* "_locale":"^[a-z]{2}?$"
* })
*/
public function fallbackDefaultAction() {
$this->defaultAction();
}
关于php - Symfony @Route 注解 i18n : Is it possible to have a fallback for languages not explicitly declared?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64776402/