Я использую Sonata Admin в своем проекте. Мне нужно отобразить поле, которое не принадлежит сущности.
Рассмотрим объект Пользователь с полями имя пользователя и пароль. Но мне также нужно дополнительное поле в форме хобби, но оно не требуется в сущности User.
$formMapper
->add('username')
->add('password')
->add('hobby');
Но я получаю сообщение об ошибке Symfony:
Ни свойство «хобби», ни один из методов «getHobby ()», «hobby ()», «isHobby ()», «hasHobby ()», «__get ()» не существуют и не имеют общего доступа в классе «App \ Сущность \ Пользователь ".
Как я могу это решить? Заранее спасибо!!
«хобби» - это просто поле для примера. У меня есть несколько областей, таких как хобби, которые нужно хранить в нескольких таблицах.
ах, понял. тогда вам нужно использовать перехватчик preUpdate для доступа к данным и что-то с ними делать. :)
Ага! Я использовал $ this-> getForm () -> get ('hobby') -> getData (); получить значение "хобби"






Этот ответ для 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:trueIf you wish the field to be ignored when reading or writing to the object, you can set the
mappedoption tofalse.
Итак, для вашего случая это должно быть примерно так:
$formMapper
->add('username')
->add('password')
->add('hobby', null, [
'mapped' => false
]);
Потрясающие. Я не знал, что решение будет таким простым. Спасибо.
Можете ли вы мне помочь, как понять ценность хобби в админ-классе Sonata?
Это может помочь - stackoverflow.com/questions/21515172/…
Что ж, вы, вероятно, сможете сделать это с ответом, предоставленным Bananaapple, но где вы будете хранить хобби?