使用SonataAdminBundle和Symfony2,我正在寻找一个解决方案来访问具有特定路由的一些管理类。
例如,我有一个ContractAdmin类,其中包含布尔字段,如“已启用”。我想要添加的是奏鸣曲管理的左边KnpMenu,一些指向同一个admin类的链接,但是有一个自定义路由(除了默认的“列表”路由),例如:
这样我就不用使用过滤器了。
那么,我如何创建并将这些链接放到具有自定义路由的相应管理类控制器的菜单上呢?
(谢谢;)
发布于 2016-10-12 12:33:44
我已经解决了它,为这个管理类声明了一个自定义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;
}https://stackoverflow.com/questions/39983045
复制相似问题