加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

symfony – 如何结合DoctrineExtensions中的Translatable和Slugg

发布时间:2020-12-14 19:33:43 所属栏目:Java 来源:网络整理
导读:我已经安装了 https://github.com/stof/StofDoctrineExtensionsBundle并在Country实体的特定字段上使用Translatable和Sluggable: ...class Country{ ... /** * @GedmoTranslatable * @GedmoSlug(fields={"name"}) * @ORMColumn(length=255,nullable=fals
我已经安装了 https://github.com/stof/StofDoctrineExtensionsBundle并在Country实体的特定字段上使用Translatable和Sluggable:
...
class Country
{
    ...
    /**
     * @GedmoTranslatable
     * @GedmoSlug(fields={"name"})
     * @ORMColumn(length=255,nullable=false)
     */
    private $slug;

对于英语用户,页面的URL应为… / country / france;对于德语用户,页面的URL应为… / land / frankreich.

在一个控制器中,我得到了特定语言的slug,并通过这个特定于语言环境的slug进行过滤,我想要检索一个国家实体.

我在这里或文档中没有找到任何关于如何做到这一点的内容.

感谢有关如何解决这个问题的任何提示!

解决方法

刚刚找到了 solution in this blog article.解决方案是使用TranslationWalker的ORM查询提示自动加入转换表,因此您可以按任意翻译字段排序或过滤.这很棒!

然后代码看起来像:

...
->createQuery('SELECT...FROM MyFooBundle:Country c WHERE c.slug = :slug...)
->setParameter('slug',$slug)
->setHint(
    DoctrineORMQuery::HINT_CUSTOM_OUTPUT_WALKER,'GedmoTranslatableQueryTreeWalkerTranslationWalker'
)
->getSingleResult();

顺便说一下:如果你想使用回退(即如果没有特定的翻译可用,请使用默认的字符串/文本),然后通过setTranslationFallback方法调用(在doctrine_extensions.yml中)为你的gedmo.listener.translatable服务配置它. .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读