ste*_*fax 5 symfony doctrine-orm
我已经安装了https://github.com/stof/StofDoctrineExtensionsBundle,并在Country实体的特定字段上使用Translatable和Sluggable:
...
class Country
{
...
/**
* @Gedmo\Translatable
* @Gedmo\Slug(fields={"name"})
* @ORM\Column(length=255, nullable=false)
*/
private $slug;
Run Code Online (Sandbox Code Playgroud)
对于英语用户,页面的URL应为.../country/france;对于德语用户,页面的URL应为.../land/frankreich.
在一个控制器中,我得到了特定语言的slug,并通过这个特定于语言环境的slug进行过滤,我想要检索一个国家实体.
我在这里或文档中没有找到任何关于如何做到这一点的内容.
感谢有关如何解决这个问题的任何提示!
刚刚在这篇博客文章中找到了解决方案。解决方案是使用 TranslationWalker 的 ORM 查询提示自动连接翻译表,这样您就可以按任何翻译字段进行排序或过滤。这很棒!
代码看起来像这样:
...
->createQuery('SELECT...FROM MyFooBundle:Country c WHERE c.slug = :slug...)
->setParameter('slug', $slug)
->setHint(
\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
)
->getSingleResult();
Run Code Online (Sandbox Code Playgroud)
顺便说一句:如果您想使用后备(即,如果没有可用的特定翻译,则采用默认字符串/文本),然后只需通过 setTranslationFallback 方法调用(在doctrine_extensions.yml 中)为您的 gedmo.listener.translatable 服务配置它。
| 归档时间: |
|
| 查看次数: |
2867 次 |
| 最近记录: |