我正在使用 JMS\I18nRoutingBundle
, Gedmo\Translatable
和 Gedmo\Sluggable
.具有默认位置的路由也适用,但其他语言环境无需翻译 slug 即可工作。我的 i18n 路由有以下设置:
# Doctrine extensions
stof_doctrine_extensions:
default_locale: %locale%
translation_fallback: true
orm:
default:
#…
sluggable: true
translatable: true
loggable: false
#…
jms_i18n_routing:
default_locale: cs_CZ
locales: [cs_CZ, en_US]
strategy: custom
hosts:
cs_CZ: example.cz
en_US: example.com
redirect_to_host: true
当我设置这样的路线时:
hw_category:
pattern: /category/{slug}
defaults: { _controller: AcmeSiteBundle:Category:detail }
/**
* @Template
*/
public function detailAction(Category $category)
{}
这条路线有效
example.cz/category/slug-in-czech
example.com/category/slug-in-czech
但我想找工作
example.com/category/slug-in-english
抛出 404 异常 object not found
.
最佳答案
正如我所看到的,您正在使用 ParamConverter 自动获取您的类别。
如 slug-in-english
是您数据库中的现有 slug,但学说拒绝获取它。
您可能没有 可翻译监听器 那时添加到您的 EntityManager 中。
示例 :
$translatableListener = new \Gedmo\Translatable\TranslationListener();
$translatableListener->setTranslatableLocale('en_us');
$em->addEventSubscriber($translatableListener);
如果您使用的是 StofDoctrineExtensionsBundle :
stof_doctrine_extensions:
default_locale: en_US
orm:
default:
# ...
translatable: true
关于symfony - Symfony 中的自定义 i18n 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059980/