3

我有一个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 的情况下添加自定义排序条件?

4

2 回答 2

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 :-(

于 2013-07-22T09:05:24.517 回答
0

你可以这样做:

实体:

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

并列出字段:

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->add('textFullName')
        ->add('birthday')
        ->add('email')
        ->add('phone')
    ;
}
于 2014-02-24T17:04:53.893 回答