Использование той же формы для вставки и обновления пользователя в Symfony2

У меня есть пользователь, который может зарегистрироваться через форму: имя, фамилия, адрес электронной почты, телефон, пароль, имя пользователя.

Зарегистрированный пользователь может изменить: имя, фамилию, телефон

Мой тип пользователя

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');
}

Как я должен отображать другую форму для регистрации и обновления?


person andrius.k    schedule 25.03.2015    source источник
comment
Просто: просто создайте еще одно представление Twig и введите тот же FormType, но отобразите только те form_row(), которые необходимы. Вам нужно будет связать свою форму с вашей сущностью, чтобы данные присутствовали в форме, когда пользователь меняет свой профиль.   -  person D4V1D    schedule 25.03.2015


Ответы (1)


Разница только в том, что вы передаете в качестве второго атрибута методу createForm. Если вы передадите пустой объект, это будет форма для добавления нового пользователя. Если вы передадите объект с заполненными данными вашего пользовательского объекта, это будет форма редактирования. Так:

$yourNewUserForm = $this->createForm(new UserType(), new UserEntity());

$userEntity = $this->getDoctrine()->getRepository('YourBundle:User')->find(1);
$yourEditUserForm = $this->createForm(new UserType(), $userEntity);

ПРИМЕЧАНИЕ. В приведенном выше коде предполагается, что вы находитесь в классе, расширяющем Controller, и у вас есть доступные методы createForm и getDoctrine(), но подумайте, должно ли это быть частью контроллера или его следует переместить куда-то еще (что, вероятно, лучше идея)

person Tomasz Madeyski    schedule 25.03.2015