有没有办法为SonataAdminBundle创建自定义过滤器类型,它扩展了另一种类型,例如doctrine_orm_callback类型?我们的想法是在其他过滤器中重用自定义类型
public function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('field', 'doctrine_orm_callback', array(
'callback' => function($queryBuilder, $alias, $field, $value) {
if (!$value['value']) {
return;
}
$queryBuilder->leftJoin(sprintf('%s.field', $alias), 'field')
->andWhere("field LIKE :field")
->setParameter('field', "%{$value['value']}%");
return true;
},
'field_type' => 'search'), null, array('pattern' => '^[A-Za-z0-9]{1,12}$'));
}
谢谢!
答案 0 :(得分:1)
选中此link并尝试:
->add('with_open_comments',
'doctrine_orm_callback',
array('callback' => array($this, 'yourFunction'),
'field_type' => 'search'),
null,
array('pattern' => '^[A-Za-z0-9]{1,12}$'));
public function yourFunction($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$queryBuilder->leftJoin(sprintf('%s.field', $alias), 'field')
->andWhere("field LIKE :field")
->setParameter('field', "%{$value['value']}%");
return true;
}
}