2015-10-06 167 views
0

我使用FOS和我建立自己的窗體來創建用戶。我有檢測重複的用戶名和電子郵件的問題。FOS UniqueEntity形式

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
    @UniqueEntity(
*  fields={"email"}, 
*  message="Your E-Mail adress has already been registered" 
*) 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 
} 

而沒有。我看到:

SQLSTATE [23000]:完整性約束違規:1062重複條目 關鍵 '測試' 'UNIQ_957A647992FC23A8'

我喜歡的錯誤消息。我嘗試:Symfony 2 - Set UniqueEntity message

回答

0

其實FOS模型用戶已經有用戶名和郵件的唯一實體約束。請確保您的表單的validation_groups設置爲「註冊」或「配置文件」。

/** 
* @param OptionsResolverInterface $resolver 
*/ 
public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class'  => 'AppBundle\Entity\User', 
     'validation_groups' => array('Registration', 'Default'), 
    )); 
} 

或者您可以使用「emailCanonical」字段設置自己的唯一約束。

* @UniqueEntity(fields="emailCanonical", errorPath="email", message="Your E-Mail adress has already been registered") 
+0

我也試試。但我使用了:configureOptions()。用setDefaultOptions()不起作用。也許FORM沒有看到validation_groups?在我的buildForm中是addEventListener(FormEvents :: POST_BIND)它有什麼要做的?我工作的symfony 2.7.4 – viko

+0

請嘗試建立FOS登記表的驗證組中confirm.yml: fos_user: 登記: 形式: 類型: validation_groups:[註冊,默認] –

+0

confirm.yml ?也許config.yml? - 它是什麼? getName我的表單?如果是,它不起作用 – viko