Symfony 2 Sonata Admin - ListMapper中的自定义排序

时间:2012-11-28 15:00:02

标签: symfony sonata-admin

我有一个Customer实体,其中的字段包括FirstName,LastName。

此外,我在这个实体中有一个方法:

public function getFullName() {
        return sprintf("%s %s", $this->getLastName(), $this->getFirstName());
}

我的configureListFields功能如下所示:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('fullName')
        ->add('birthday')
        ->add('email')
        ->add('phone')
    ;
}

如何将字段 fullName 排序?

如何在有或没有Doctrine ORM的情况下添加自定义排序条件?

2 个答案:

答案 0 :(得分:0)

我猜你可以破解使用自定义模板,如果可以只对姓氏进行排序。

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('last', null, array(
            'sortable' => true,
            'template' => 'YourAdminBundle:CRUD:fullname.html.twig')
        ->add('birthday')
        ->add('email')
        ->add('phone')
    ;
}

在你的模板中:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{ object.lastName }} {{ object.firstName }} 
{% endblock %}

问题是它只会对lastName而不是lastName firstName进行排序: - (

答案 1 :(得分:0)

你可以这样做:

实体:

public function getTextFullName() 
{
   return $this->LastName . $this->FirstName;
}

并列出Fieds:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('textFullName')
        ->add('birthday')
        ->add('email')
        ->add('phone')
    ;
}