2012-08-27 95 views
0

我想創建用戶並自動生成密碼。我使用自定義窗體類來顯示名字,姓氏和電子郵件字段。用戶名是基於電子郵件創建的,沒有問題。但是,我不能跳過密碼驗證,並保存新用戶時實現密碼生成。使用用戶註冊表時刪除密碼檢查

我應該創建自定義validator.xml

原如下:

<?xml version="1.0" encoding="UTF-8" ?> 

<container xmlns="http://symfony.com/schema/dic/services" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 

    <parameters> 
     <parameter key="fos_user.validator.password.class">FOS\UserBundle\Validator\PasswordValidator</parameter> 
     <parameter key="fos_user.validator.unique.class">FOS\UserBundle\Validator\UniqueValidator</parameter> 
    </parameters> 

    <services> 
     <service id="fos_user.validator.initializer" class="FOS\UserBundle\Validator\Initializer" public="false"> 
      <tag name="validator.initializer" /> 
      <argument type="service" id="fos_user.user_manager" /> 
     </service> 
    </services> 

</container> 

我在這裏看到fos_user.validator.password.class,也許我應該在這裏把自定義類

好的,我接近解決方案,使用validator.xml我可以更改一些驗證器,但我不知道如何將NotBlank驗證器更改爲Blank。試過這個片段沒有成功。

<class name="Application\Sonata\UserBundle\Entity\User"> 

     <property name="plainPassword"> 
      <constraint name="Blank"> 
       <option name="groups">Registration</option> 
      </constraint> 
     </property> 

    </class> 

回答

0

似乎超載已定義的約束是根本不可能的。出於這個原因,許多人建議使用驗證組來控制這一點。當然對於這個例子來說這是一個壞主意,因爲有很多驗證規則需要複製到新組中。

因此,我決定爲密碼創建一些隱藏字段,並用一些隨機值填充它以用於生成真實密碼。