2017-09-06 101 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; 
}