У меня есть пользователь, который может зарегистрироваться через форму: имя, фамилию, адрес электронной почты, телефон, пароль, имя пользователя.
Зарегистрированный пользователь может изменение: имя, фамилию, телефон
Мой пользовательский тип
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('lastname', 'text')
->add('email', 'email')
->add('phone', 'text')
->add('password', 'text')
->add('username', 'text');
}
Как я могу визуализировать другую форму для регистрации и обновления?
Единственное отличие состоит в том, что вы передаете в качестве второго атрибута метод createForm
. Если вы пройдете пустой объект, это будет форма добавления нового пользователя. Если вы передадите объект с заполненными данными вашего пользовательского объекта, это будет форма редактирования. Так:
$yourNewUserForm = $this->createForm(new UserType(), new UserEntity());
$userEntity = $this->getDoctrine()->getRepository('YourBundle:User')->find(1);
$yourEditUserForm = $this->createForm(new UserType(), $userEntity);
ПРИМЕЧАНИЕ. createForm
getDoctrine()
кода предполагается, что вы используете Controller
расширения класса, и у вас есть доступные методы createForm
и getDoctrine()
но подумайте, должно ли это быть частью контроллера или его нужно переместить в другое место (что, вероятно, является лучшей идеей)
Twig
и введите тот жеFormType
но только отображайтеform_row()
который необходим. Вам нужно будет связать свою форму с вашей сущностью, хотя данные будут присутствовать в форме, когда пользователь меняет свой профиль.