SonataAdminBundle:创建自定义过滤器类型


SonataAdminBundle: Create custom filter type

有没有办法为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}$'));
}

谢谢!

检查此链接并尝试:

->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;
    }
}