Расширение существующего класса в Symfony - PullRequest
0 голосов
/ 29 марта 2012

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

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

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

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

// edit.html.twig code

        <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. Возможно отображение только некоторых полей. Если да, как это может быть достигнуто. Любая помощь будет оценена

1 Ответ

2 голосов
/ 29 марта 2012

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

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

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