【问题标题】:Symfony2 Gedmo Translatable with APY DataGrid and KNP PaginatorSymfony2 Gedmo 可通过 APY DataGrid 和 KNP Paginator 进行翻译
【发布时间】:2014-10-24 10:15:58
【问题描述】:

我在使用 Gedmo\DoctrineExtensions Translatable 时遇到了一些问题。

首先是 APY DataGrid - 无法在非默认语言环境的网格中显示翻译后的字符串。如果我使用默认设置的可翻译,网格中的所有字符串都以默认语言显示。如果我在 Entity 中实现 Translatable 并为表格和其他内容添加注释,那么我可以在网格中看到已翻译的字符串,但在切换语言环境后这些保持不变。似乎使用了 QueryCache,但找不到如何设置不使用它。这是网格的一部分:

use APY\DataGridBundle\Grid\Source\Entity;

<...>

$source = new Entity('MainBundle:Entity');
$source->addHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker');

当然最好不用注释和单独的实体进行翻译。

第二个问题是 KNP 分页。其实没有深究,但类似的问题。

主要问题是,当我通过实体的可翻译字段运行一些查询时。假设我有一个名为 Krepšinis 的实体(立陶宛语为篮球),我已将此字符串翻译为 Basketball。默认语言是 LT。当我使用默认语言执行搜索时,一切正常,但如果我将语言环境更改为 EN 并尝试搜索 basket,它不会返回任何结果,如果我搜索 krep,它返回我 Basketball。搜索代码:

// Controller

$repository = $this
    ->getDoctrine()
    ->getManager()
    ->getRepository('MainBundle:Entity');

$query = $repository
    ->search($term)
    ->getQuery()
    ->useQueryCache(false)
    ->setHint(\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER, 'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker');



// Repository

public function search($query)
{
    $qb = $this->createQueryBuilder('t');
    $term = $qb->expr()->literal('%' . $query . '%');
    $query = $qb->where($qb->expr()->like('t.name', $term));

    return $query;
}

感谢任何帮助

【问题讨论】:

    标签: symfony translation query-cache doctrine-extensions knppaginator


    【解决方案1】:

    如果内容被翻译,你需要使用你已经经历过的查询提示。但是为了让它为不同的语言环境缓存,你需要为查询设置语言环境提示:

    <?php
    // hint the locale in order to make query cache id unique
    $query->setHint(
        \Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE,
        'en' // take locale from session or request
    );
    

    这在documentation中有描述,请仔细阅读。 ORM查询缓存基于DQL、查询参数和查询提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2017-09-21
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多