jav*_*gzz 7 symfony sonata-admin
我想知道天气可能以及如何为列表视图配置过滤器,如下所示,Symfony 2中的SonataAdminBundle
假设我有实体Order,指向实体User,指向实体Company.我想配置过滤器既可以由用户过滤,也可以按公司(用户公司)进行过滤.第一个是直接过滤.第二个是我试图澄清的内容.
在OrderAdmin类中,我将覆盖configureDatagridFilters:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('created_at')
//... some other filters on Order fields, as usual
// the filter on User, provided 'user', no ploblem
->add('user')
// and the filter by Company
->add('user.company') // this doesn't work, of course
;
}
Run Code Online (Sandbox Code Playgroud)
公司过滤器的语法是由sonta docs提供的:http://sonata-project.org/bundles/doctrine-orm-admin/2-0/doc/reference/filter_field_definition.html
不是为了我想要的东西,但找不到在哪里看.
希望有人对此有所了解.
谢谢
jav*_*gzz 15
最后,我找到了另一个问题的答案:如何在SonataAdmin中创建自定义DataGrid过滤器,并仔细阅读我在问题中粘贴的奏鸣曲管理员文档链接.
万一有人有这个问题,并采取前面的例子:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
//... whatever filter
// and the filter by Company
->add('company', 'doctrine_orm_callback', array(
'callback' => array($this, 'callbackFilterCompany'),
'field_type' => 'checkbox'
),
'choice',
array('choices' => $this -> getCompanyChoices())
;
}
Run Code Online (Sandbox Code Playgroud)
方法getCompanyChoices检索公司ids =>公司名称(例如)的关联数组.而callbackFilterCompany方法如下
public function callbackFilterCompany ($queryBuilder, $alias, $field, $value)
{
if(!is_array($value) or !array_key_exists('value', $value)
or empty($value['value'])){
return;
}
$queryBuilder
->leftJoin(sprintf('%s.user', $alias), 'u')
->leftJoin('u.company', 'c')
->andWhere('c.id = :id')
->setParameter('id', $value['value'])
;
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9262 次 |
| 最近记录: |