[英]Sonata Admin Class : add KnpMenu links pointing Admin class with custom route
使用SonataAdminBundle與Symfony2,我正在尋找一個解決方案來訪問具有特定路由的一些Admin類。
例如,我有一個ContractAdmin類,其中包含布爾字段,例如“Enabled”。 我想要的是在sonata admin的左側KnpMenu中添加一些鏈接,指向同一個Admin類但使用自定義路由(默認的“list”路由除外),例如:
這樣可以避免我使用過濾器。
那么,我怎樣才能創建這些鏈接並將其放到菜單中,該菜單使用自定義路徑定位相應的管理類控制器?
謝謝 ;)
我已經解決了為這個管理類聲明一個自定義CRUDController並添加調用listAction方法所需的操作:
class ContractAdminController extends Controller {
public function contractsEnabledAction() {
return $this->listAction();
}
我已將此自定義路由聲明為Admin類:
protected function configureRoutes(RouteCollection $collection) {
parent::configureRoutes($collection);
$collection->add('contracts_enabled', 'contractsEnabled/');
}
然后,覆蓋admin類中的createQuery方法,我正在使用請求“_route”屬性:
public function createQuery($context = 'list') {
$query = parent::createQuery($context);
switch ($this->getRequest()->get("_route")) {
case "admin_acme_contract_contracts_enabled" :
$query->andWhere(
$query->expr()->eq($query->getRootAliases()[0] . '.enabled', ':param')
);
$query->setParameter('param', true);
break;
}
return $query;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.