Форма редактирования EntityType сонаты Symfony - выбрать - получить другие текущие

У меня есть простое поле генератора форм:

$formMapper->add('project',EntityType::class, [
            'class' => Project::class,
        ]);

Это поле для выбора родителя в древовидной структуре данных. Он очень хорошо работает в ADD, но в Edit я не хочу проецировать с идентификатором X, чтобы можно было выбрать родительский для проекта с идентификатором X

Форма редактирования EntityType сонаты Symfony - выбрать - получить другие текущие

Я пытаюсь использовать свойство query_builder, но не знаю, как определить идентификатор текущего элемента редактирования из класса администратора.

Как поймать этот идентификатор или простейший идентификатор исключения текущего элемента редактирования в select?

Помогает ли вам данный ответ? Если нет, дайте нам знать. Если да, примите ответ (и, возможно, проголосуйте за него). Полное игнорирование ответа - это немного недоброжелательно.

Stephan Vierkant 23.07.2018 16:20

@Stephan Vierkant Спасибо за совет

kmad 31.07.2018 12:25
Стоит ли изучать 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 и хотите разрабатывать...
0
2
818
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я полагаю, ваш FormType сопоставлен с вашим отредактированным элементом. Следовательно, вы можете использовать что-то вроде (имена классов / полей / сущностей должны быть заменены на ваши):

use Doctrine\ORM\EntityRepository;
class ProjectFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $currentId = $builder->getData()->getId();
        $builder->add('project', EntityType::class, array(
            'class' => Project::class,     
            'query_builder' => function (EntityRepository $er) use ($currentId) {
                return $er->createQueryBuilder('p')
                           ->where('p.id != :idCurrent')
                           ->setParameter('idCurrent', $currentId);
             },  
       ));
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => Project::class,
        ));
    }
}

Спасибо. Ваш ответ хорош, но через некоторое время я нашел самое простое решение этой ситуации. AbstractAdmin имеет метод getSubject ().

kmad 31.07.2018 12:27

Полезно знать, я должен признать, что я не очень знаком с администратором сонаты, я дал вам более общий ответ, который работает вне контекста сонаты.

Aurelien 01.08.2018 10:28

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