2
「Offer」という名前のエンティティがあるとしましょう。SonataAdminBundle - 1つのエンティティの複数のリストビュー
オファーエンティティに対して複数のリストビューを作成したいと考えています。各リストビューにはさまざまな州(例:ドラフト、アクティブ、非アクティブなど)のオファーが含まれている必要があります。
これまでのところ、私は2人のオファー管理者:DraftOfferAdmin
とActiveOfferAdmin
を作成しました。ここでカスタムクエリを定義しました。
public function createQuery($context = 'list')
{
/** @var ModelManager $modelManager */
$modelManager = $this->getModelManager();
$entityManager = $modelManager->getEntityManager($this->getClass());
$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder
->select('o')
->from($this->getClass(), 'o')
->where('o.state = :state')
->setParameter('state', 'draft');
$query = new ProxyQuery($queryBuilder);
foreach ($this->extensions as $extension) {
$extension->configureQuery($this, $query, $context);
}
return $query;
}
クエリは正常に動作しているようです。
私はサービスで管理者が定義した:
services:
admin.draft_offer:
class: IndexBundle\Admin\Offer\DraftOfferAdmin
arguments:
- null
- IndexBundle\Entity\Offer
- IndexBundle:CRUD
tags:
- { name: sonata.admin, manager_type: orm, group: Offers, label: Draft Offers }
admin.unverified_offer:
class: IndexBundle\Admin\Offer\UnverifiedOfferAdmin
arguments:
- null
- IndexBundle\Entity\Offer
- IndexBundle:CRUD
tags:
- { name: sonata.admin, manager_type: orm, group: Offers, label: Unverified Offers }
しかし、両方のリストビューページは同じURL
http://domain.com/admin/index/offer/list
を共有します。どのようなアイデアを私の設定で逃すことができますか?
答えはありませんが、他の人がそれを修正する方法に返答しない場合は、これを正しいものとしてマークします。とにかく、私は記事を読むようになりました。それは良い選択肢かもしれません。ありがとう! –
サービス名をadmin_test_testのように大きく変えてみると、奇妙に聞こえるかもしれませんが、それは一度助けてくれました。 – Filchev
最終的にMediaBundleは私にはもっと適していましたが、特定のフィールドで管理者を分ける問題は解決されていません。 –