当前位置: 首页 > 知识库问答 >
问题:

在Symfony2中使用相同的表单进行用户插入和更新

封德华
2023-03-14

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

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

我的用户类型

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

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

共有1个答案

谭安翔
2023-03-14

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

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

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

注意:上面的代码假定你在类中扩展了<代码>控制器< /代码>,你有你的代码> CytFrase和<代码> GealStudio()/Case>可用的方法,但是考虑一下这是否应该是控制器的一部分,或者它应该被移到别的地方(这可能是个更好的主意)。

 类似资料:
  • 问题内容: 我正在尝试学习EntityFramework,但无法获得基本的插入和更新功能。当包含SqlCe数据库(.sdf)时,向导将创建Test.edmx / designer.vb文件。由此,我创建了我的数据上下文,如下所示。表名称是“用户”。 我的实体类的语法似乎与Web上的示例有些不同。这有点令人困惑,我不知道为什么会这样。下面,我展示了两种不同的Insert方法,这两种方法都在.Save

  • 问题内容: 我有两个表,一个名为同一列中,他说,。 我想,从复制,,,以,,,分别,这里的是一样的,如何做到这一点的SQL语句? 问题答案: 只要您有合适的索引,它就可以正常工作: sqlite3中的UPDATE不支持FROM子句,这使它比其他RDBMS的工作量更多。 如果性能不令人满意,则另一个选择可能是使用select为table_a建立新行,并与table_a联接到临时表中。然后从table

  • 在游标和循环的帮助下,我将记录插入表中。关闭游标后,我编写了update语句来更新游标插入的一些记录,这样reords就不会更新。但我在外面进行了查询,然后更新了记录 我的尝试是删除程序,如果存在kpsf_inopdormantac; 请帮帮我

  • 问题内容: 我只是在玩输入和变量。我正在尝试运行一个简单的功能: 我想提示用户输入,,和。最简单,最干净的方法是什么? 问题答案: 您可以使用该函数提示用户输入,并将用户输入从字符串转换为浮点数: 如果您使用的是python 2,请改用。

  • 问题内容: 我正在两个表之间进行数据迁移(拆分出一个相关的表)。现有表为,它具有一列和一个指向新表的新添加的列,该表也具有一列。对于每一行,我要一个新的行与复制价值,并在相应的行与新插入的ID。 这是我尝试过的SQL: 我收到一个错误,因为我在该子句中包括了该列,但实际上没有为插入选择它。这是有道理的,但我不知道如何修改查询以执行所需的操作。我缺少一种完全不同的方法吗? 问题答案: 有几种解决问题

  • 使用基于表单的JAAS、MySQL、Apache TomEE、JSP、Servlet 我知道如何配置基于表单的JAAS,当用户试图访问安全页面时,自动将用户重定向到登录页面。基本上,我已经为TomEE和MySQL配置了JDBC领域(在文件中),在中,我已经声明了、和。 然后,有以下登录表单: 而且,这对于在web.xml中的标记中声明的页面很好。 但是,我想有明确的访问一个页面,用户可以登录。那么