symfony - Symfony 中的自定义 i18n 路由

标签 symfony internationalization routing

我正在使用 JMS\I18nRoutingBundle , Gedmo\TranslatableGedmo\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-czechexample.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/

相关文章:

php - 动态覆盖 Swiftmailer 传输选项而不是使用 parameters.yml 选项

php - SearchPhaseExecutionException [无法执行阶段[查询]

internationalization - 如何以 i18n 友好的方式缩写大数?

html - 使用 l20n 本地化属性

asp.net-mvc - ASP.NET MVC 路由和区域

symfony - 如何使用从composer安装的phpunit?

php - 错误的 symfony 配置

ios - 除非先运行干净,否则运行 ibtool 会导致部分 iOS 构建中断构建

php - 通过自定义包的 Symfony 路由仅适用于控制台模式

c# - Page.RouteData.Values ["parameter"] 不工作