を含む「カテゴリ」エンティティがあります
/**
* @ORM\Column(type="string", length=255)
*/
protected $nameFr;
/**
* @ORM\Column(type="string", length=255)
*/
protected $nameEn;
今、私はローカライズされた名前をビューに表示しようとしています。次を使用してどちらかを表示できます。
{{ categories.nameFr }} and {{ categories.nameEn }}
getName()
だから私は私が使用できるように呼ばれるメソッドを作りました{{ categories.name }}
ロケールにアクセスするだけでよかったのでprotected $locale
、setter と getter を使用してエンティティにプロパティを追加し、ビューを呼び出す前にロケールを設定しました (ちなみに、リターンには @Template を使用しています)。
$locale = $this->getRequest()->getLocale();
$categories->setLocale($locale);
return array(
'categories' => $categories
);
これは機能していましたが、エンティティの代わりにクエリを送信する必要があるページネーション バンドルKnpLabs/KnpPaginatorBundleを実装しました。
$em = $this->getDoctrine()->getManager();
$categoriesQuery = $em->createQueryBuilder()
->select('category')
->from('OylexCategoryBundle:Category', 'category')
;
$locale = $this->getRequest()->getLocale();
$categoriesQuery->setLocale($locale);
$paginator = $this->get('knp_paginator');
$categoriesPagination = $paginator->paginate(
$categoriesQuery,
$this->get('request')->query->get('page', 1),
30
);
return array(
'categoriesPagination' => $categoriesPagination
);
これはエラー メッセージで失敗します: FatalErrorException: Error: Call to undefined method Doctrine\ORM\QueryBuilder::setLocale()
。
代わりにメソッドを試してみるとsetLocale()
、$categoriesPagination
次のエラー メッセージで失敗します。FatalErrorException: Error: Call to undefined method Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination::setLocale()
ロケールをエンティティに渡す方法はありますか? または、この状況を処理するためのより良い方法はありますか?
ありがとう、