簡體   English   中英

Sonata Admin Class:添加指向Admin類的KnpMenu鏈接和自定義路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM