2012-03-29 66 views
0

我是symfony的新手。我已经使用的代码创建的登记表:扩展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代码

 <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> 

与编辑代码的问题但是是它显示我在所有上述领域的RegisterType类。有可能仅显示一些字段。如果是的话,这是如何实现的。任何帮助将不胜感激

+0

我们可以看到您的嫩枝模板代码请... – Flukey 2012-03-29 11:29:37

回答

2

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

你还可以:

  • 请只是一个形式类型,但某些字段添加条件 - 那就是,只有当实体是新的。你可以让表单类型为$options['data'],并检查其ID是不是null或其他。
  • 使用form events