在Symfony中扩展现有的Class

时间:2012-03-29 11:27:31

标签: symfony symfony-forms

我是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 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 个答案:

答案 0 :(得分:2)

使用注册表单类型编辑用户没有意义,因为每个用户注册一次。相反,您可以创建另一种表单类型,仅包含编辑用户时所需的字段。可以扩展另一个以避免重复。

你也可以:

  • 只保留一种表单类型,但有条件地添加一些字段 - 也就是说,仅当实体是新的时。您可以将表单类型中的实体设为$options['data'],并检查其ID是否为null或其他。
  • 使用form events