奏鸣曲管理员bundle 过滤字段和区分大小写 不起作用.没有类型名为"doctrine_phpcr_string&



我尝试使用奏鸣曲管理员捆绑包和symfony 2创建不区分大小写的过滤,但我得到一个错误。

"symfony/symfony": "2.6.*"
"sonata-project/admin-bundle": "^2.3",

这是管理员类

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name', 'doctrine_phpcr_string', array(
'compare_case_insensitiv' => false
))
;
}

这是文档

https://sonata-project.org/bundles/doctrine-phpcr-admin/master/doc/reference/filter_field_definition.html#filtering-fields-and-case-sensitivity

这是我的错误

No attached service to type named `doctrine_phpcr_string`

这里是解决方案:)

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name', '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
->andWhere("LOWER(u.name) LIKE LOWER(:field)")
->setParameter('field', "%{$value['value']}%");
return true;
}

相关内容

最新更新