将SonataAdminBundle与Symfony2一起使用,我正在寻找一种解决方案来访问具有特定路径的某些Admin类。
例如,我有一个ContractAdmin类,其中包含布尔字段,例如"已启用"。 我想要的是在Sonata管理员的左侧KnpMenu中添加一些指向相同Admin类但具有自定义路由的链接(除了默认的" list" route),例如:
这可以避免我使用过滤器。
那么,我怎样才能创建这些链接并将其放到菜单中,该菜单使用自定义路径定位相应的管理类控制器?
谢谢;)
答案 0 :(得分:1)
我已经解决了为此管理类声明自定义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;
}