首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奏鸣曲管理类:添加带有自定义路由的KnpMenu链接,指向Admin类

奏鸣曲管理类:添加带有自定义路由的KnpMenu链接,指向Admin类
EN

Stack Overflow用户
提问于 2016-10-11 17:22:34
回答 1查看 302关注 0票数 3

使用SonataAdminBundle和Symfony2,我正在寻找一个解决方案来访问具有特定路由的一些管理类。

例如,我有一个ContractAdmin类,其中包含布尔字段,如“已启用”。我想要添加的是奏鸣曲管理的左边KnpMenu,一些指向同一个admin类的链接,但是有一个自定义路由(除了默认的“列表”路由),例如:

  • 合同
    • 所有合同
    • 已启用合同(仅列出已启用的合同)
    • 尚未启用的合同(仅列出未启用的合同)

这样我就不用使用过滤器了。

那么,我如何创建并将这些链接放到具有自定义路由的相应管理类控制器的菜单上呢?

(谢谢;)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 12:33:44

我已经解决了它,为这个管理类声明了一个自定义CRUDController,并添加了调用listAction方法所需的操作:

代码语言:javascript
复制
class ContractAdminController extends Controller {

public function contractsEnabledAction() {
    return $this->listAction();
}

我已经声明了这个进入Admin类的自定义路由:

代码语言:javascript
复制
protected function configureRoutes(RouteCollection $collection) {
    parent::configureRoutes($collection);
    $collection->add('contracts_enabled', 'contractsEnabled/');
}

然后,在admin类中重写createQuery方法,我使用请求"_route“属性,如下所示:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39983045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档