【问题标题】:Using the same form for user insertion and update in Symfony2在 Symfony2 中使用相同的表单进行用户插入和更新
【发布时间】:2015-03-25 14:15:03
【问题描述】:

我有用户,可以通过表单注册:姓名、姓氏、电子邮件、电话、密码、用户名。

注册用户可以更改:姓名、姓氏、电话

我的用户类型

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

我应该如何呈现不同的表单进行注册和更新?

【问题讨论】:

  • 简单:只需创建另一个Twig 视图并注入相同的FormType,但只显示需要的form_row()。不过,您需要将表单与实体绑定,以便在用户更改个人资料时表单中存在数据。

标签: php symfony symfony-forms


【解决方案1】:

唯一的区别是你作为第二个属性传递给createForm 方法。如果您传递空实体,它将是添加新用户的表单。如果您传递带有用户实体填充数据的实体,它将是一个编辑表单。所以:

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

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

注意: 上面的代码假设你在类扩展 Controller 并且你有你的 createFormgetDoctrine() 方法可用,但考虑这应该是控制器的一部分还是应该是搬到别的地方(这可能是一个更好的主意)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-07
    • 2023-03-22
    • 2018-02-22
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多