在Symfony2中删除/取消设置表单字段

5

我正在扩展FosUserBundle注册表单。我需要删除取消用户名字段(因为我使用电子邮件作为用户名)。

是否有一种方法可以从我正在扩展的表单中删除一个字段?

2个回答

22

如果你想从扩展FOSUser的表单类型中删除/取消设置某些字段,你可以这样做:

public function buildForm(FormBuilder $builder, array $options) 
{
    parent::buildForm($builder, $options);        

    $builder->remove('username');
}

2
谢谢,昨天有人在IRC上建议了这个。不幸的是,虽然它确实做到了我要求的事情,但它并没有改变验证数组。需要更多地操作表单来修复验证。 - MrGlass

1
如果您想覆盖约束的属性,您可以按照以下方式进行操作:
<?php

namespace Acme\UserBundle\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Acme\UserBundle\Entity\UserRepository")
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="username", column=@ORM\Column(nullable = true, unique = false ))
 *   })
 */
class User extends BaseUser {

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接