gpt4 book ai didi

symfony - 奏鸣曲管理类 : add KnpMenu links pointing Admin class with custom route

转载 作者:行者123 更新时间:2023-12-02 03:11:11 25 4
gpt4 key购买 nike

将 SonataAdminBundle 与 Symfony2 结合使用,我正在寻找一种解决方案,以通过特定路径访问某些 Admin 类。

例如,我有一个 ContractAdmin 类,其中包含诸如“已启用”之类的 bool 字段。我想在 sonata admin 的左侧 KnpMenu 中添加一些链接,这些链接指向相同的 Admin 类但具有自定义路由(除了默认的“列表”路由),例如:

  • 契约(Contract)
    • 所有契约(Contract)
    • 已启用契约(Contract)(仅列出已启用契约(Contract))
    • Contracts not yet enabled(Listing only not enabled contract)

这将避免我使用过滤器。

那么,我如何创建这些链接并将其放置到以自定义路由为目标的相应管理类 Controller 的菜单中?

谢谢;)

最佳答案

我已经解决了它为这个管理类声明一个自定义 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/');
}

然后,覆盖管理类中的 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;
}

关于symfony - 奏鸣曲管理类 : add KnpMenu links pointing Admin class with custom route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39983045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com