2017-09-06 103 views
1

我需要从注册表中删除电子邮件字段。
我的解决办法是重写注册FormType:“请输入一个电子邮件”删除电子邮件字段FOSUserBundle

<?php 
// src/AppBundle/Form/RegistrationType.php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class RegistrationType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->remove('email'); 
    } 

的申请被成功移除,但是,验证突未触发
关于如何禁用电子邮件字段验证甚至如何以正确方式制作技巧的任何想法。

回答

1

哈克实体二传手:

public function setUsername($username) { 
    $username = is_null($username) ? '' : $username; 
    parent::setUsername($username); 
    $this->setEmail($username); 
    return $this; 
} 

从FormType删除领域:

public function buildForm(FormBuilder $builder, array $options) { 
    parent::buildForm($builder, $options); 
    $builder->remove('email'); 
} 

但是在破解之前,你应该看看来自jolicode的this presentation

如果您目前正在进行这种修改,那是因为FosUserBundle不适合您的项目。我认为你不应该使用它。 (Personnaly,我认为这不是一个好的包,请阅读上面的完整演示以作出自己的意见)

如果你想替换它,我建议你使用这个excellent tutorial来创建你自己的安全系统。 (编码/粘贴/理解时间:2或3小时)

1

你可以给它的用户名的值,例如

user.php的

* @ORM\HasLifecycleCallbacks 


/** 
* 
* @ORM\PrePersist() 
*/ 
public function setEmailUser(){ 

    $this->email = $this->username; 
}