Sonata Admin - сортировка по полю отношения

В моем бэк-офисе (созданном с помощью Соната Админ) у меня есть обзор клиентов.

Мой Модель клиента выглядит так:

<?php

namespace MyProject\Domain\Model\Customer;

use Doctrine\Common\Collections\ArrayCollection;
use MyProject\Domain\Model\AddressTrait;
use MyProject\Domain\Model\HasAddressInterface;
use MyProject\Domain\Model\Project\InternalProjectInterface;

/**
 * Class: Customer
 *
 * The customer name with an associated address
 *
 * @see CustomerInterface
 * @see HasAddressInterface
 */
class Customer implements CustomerInterface, HasAddressInterface
{
    use AddressTrait;

    /** @var int */
    protected $id;

    /** @var \Doctrine\Common\Collections\Collection */
    protected $contacts;

    /** @var \Doctrine\Common\Collections\Collection */
    protected $projects;

    /**
     * Customer constructor.
     */
    public function __construct()
    {
        $this->contacts = new ArrayCollection();
    }

    /**
     * @inheritDoc
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @inheritDoc
     */
    public function getContacts()
    {
        return $this->contacts;
    }

    /**
     * @inheritDoc
     */
    public function addContact(ContactInterface $contact)
    {
        /** @var $contact \MyProject\Domain\Model\HasCustomerInterface */
        $contact->setCustomer($this);

        return $this->contacts->add($contact);
    }

    /**
     * @inheritDoc
     */
    public function removeContact(ContactInterface $contact)
    {
        /** @var $contact \MyProject\Domain\Model\HasCustomerInterface */
        $contact->setCustomer(null);

        return $this->contacts->removeElement($contact);
    }

    /**
     * @inheritDoc
     */
    public function getProjects()
    {
        return $this->projects;
    }

    /**
     * @inheritDoc
     */
    public function addProject(InternalProjectInterface $project)
    {
        /** @var $project \MyProject\Domain\Model\HasCustomerInterface */
        $project->setCustomer($this);

        return $this->projects->add($project);
    }

    /**
     * @inheritDoc
     */
    public function removeProject(InternalProjectInterface $project)
    {
        /** @var $project \MyProject\Domain\Model\HasCustomerInterface */
        $project->setCustomer(null);

        return $this->projects->removeElement($project);
    }

    /**
     * @inheritDoc
     */
    public function __toString()
    {
        return empty($this->getName()) ? "New customer" : $this->getName();
    }
}

В моем классе CustomerAdmin у меня есть:

public function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('translations[en].name', null, [
            'label' => 'Name'
        ])
        ->add('address.street', null, [
            'label' => 'Street and number'
        ])
        ->add('address.postal_code', null, [
            'label' => 'Postal code',
        ])
        ->add('address.translations[en].city', null, [
            'label' => 'City',
        ])
        ->add('_action', null, [
            'actions' => [
                'edit' => [],
                'delete' => [],
            ]
        ])
    ;
}

Проблема в том, что я не могу сортировать по имени поля. Это выглядит так:

Sonata Admin - сортировка по полю отношения

У меня также есть модель CustomerTranslation, которая выглядит так:

<?php

namespace MyProject\Domain\Model\Customer;

use MyProject\Domain\Model\NameTrait;

/**
 * Class: CustomerTranslation
 *
 * Translated information of a customer
 *
 * @see CustomerTranslationInterface
 */
class CustomerTranslation implements CustomerTranslationInterface
{
    use NameTrait;

    /** @var int */
    protected $id;

    /**
     * @inheritDoc
     */
    public function getId()
    {
        return $this->id;
    }
}

Но как я могу убедиться, что можно также сортировать по имени в обзоре клиентов?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
78
1

Ответы 1

Не могли бы вы использовать «имя» вместо перевода [en] .name?

Другие вопросы по теме