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