Добавить настраиваемое поле формы, которого нет в объекте - администратор Sonata

Я использую Sonata Admin в своем проекте. Мне нужно отобразить поле, которое не принадлежит сущности.

Рассмотрим объект Пользователь с полями имя пользователя и пароль. Но мне также нужно дополнительное поле в форме хобби, но оно не требуется в сущности User.

    $formMapper
       ->add('username')
       ->add('password')
       ->add('hobby');

Но я получаю сообщение об ошибке Symfony:

Ни свойство «хобби», ни один из методов «getHobby ()», «hobby ()», «isHobby ()», «hasHobby ()», «__get ()» не существуют и не имеют общего доступа в классе «App \ Сущность \ Пользователь ".

Как я могу это решить? Заранее спасибо!!

Что ж, вы, вероятно, сможете сделать это с ответом, предоставленным Bananaapple, но где вы будете хранить хобби?

revengeance 03.08.2018 09:23

«хобби» - это просто поле для примера. У меня есть несколько областей, таких как хобби, которые нужно хранить в нескольких таблицах.

Vinoth Selvi 03.08.2018 11:20

ах, понял. тогда вам нужно использовать перехватчик preUpdate для доступа к данным и что-то с ними делать. :)

revengeance 03.08.2018 12:58

Ага! Я использовал $ this-> getForm () -> get ('hobby') -> getData (); получить значение "хобби"

Vinoth Selvi 03.08.2018 13:27
Стоит ли изучать 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
4
2 720
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Этот ответ для Symfony2 должен оставаться верным, если я не ошибаюсь: Как добавить дополнительные поля без сущности в форму сущности в Symfony2

In symfony 2.1+, use mapped:

$form = $this->createFormBuilder($promo)
    ->add('code', 'text')
    ->add('image', 'file', array(
                "mapped" => false,
            ))
    ->getForm();

https://symfony.com/doc/current/reference/forms/types/entity.html#mapped

type: booleandefault: true

If you wish the field to be ignored when reading or writing to the object, you can set the mapped option to false.

Итак, для вашего случая это должно быть примерно так:

$formMapper
    ->add('username')
    ->add('password')
    ->add('hobby', null, [
        'mapped' => false
    ]);

Потрясающие. Я не знал, что решение будет таким простым. Спасибо.

Vinoth Selvi 03.08.2018 09:27

Можете ли вы мне помочь, как понять ценность хобби в админ-классе Sonata?

Vinoth Selvi 03.08.2018 09:40

Это может помочь - stackoverflow.com/questions/21515172/…

Bananaapple 03.08.2018 09:57

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