2012-03-29 3 views
0

Я новичок в symfony. Я создал форму регистрации, используя код:Расширение существующего класса в Symfony

$user = new Register(); 
$form = $this->createForm(new RegisterType(), $user); 

В классе RegisterType я есть 5 полей (например) .И хранить значения в базе данных, когда пользователь регистрируется с системой. Теперь я отобразить страницу EDIT, используя следующий код:

$user = $em->getRepository('MysiteUserBundle:Register')->find($id); 
$form = $this->createForm(new RegisterType(), $user); 

//edit.html.twig код

 <form action="{{ path('MysiteUserBundle_register_update',{'id':user.id}) }}" method="post" {{ form_enctype(form) }} class="register"> 
      {{ form_errors(form) }} 

      {{ form_row(form.firstname) }} 
      {{ form_row(form.lastname) }} 
      {{ form_row(form.username) }} 



      <p> 
      <input type="submit" value="Submit"> 
       </p> 
      </form> 

Проблема с кодом EDIT, однако, что он показывает мне все поля, упомянутые в Тип RegisterType. Можно отображать только некоторые поля. Если да, то как это можно достичь. Любая помощь будет оценена

+0

Можем ли мы увидеть ваш шаблон кода твиста, пожалуйста ... – Flukey

ответ

2

Не имеет смысла использовать тип регистрационной формы для редактирования пользователя, поскольку регистрация происходит один раз для каждого пользователя. Вместо этого вы можете создать другой тип формы, используя только те поля, которые вам нужны при редактировании пользователя. Чтобы избежать дублирования, можно расширить другую.

Вы можете также:

  • Держите только один тип формы, но добавить некоторые поля условно - то есть только тогда, когда объект является новым. Вы можете получить свою сущность в виде формы как $options['data'] и проверить, нет ли ее идентификатора null или что-то еще.
  • Использование form events.
Смежные вопросы