2012-03-29 3 views
0

私はFOSユーザーバンドルを使用していると私は、検証ファイルFOS/UserBundle /リソース/設定/ validaiton.xmlを上書きしたい:Symfony2のオーバーライドモデルの検証

<constraint name="FOS\UserBundle\Validator\Unique"> 
    <option name="property">usernameCanonical</option> 
    <option name="message">fos_user.username.already_used</option> 
    <option name="groups"> 
     <!-- <value>Registration</value> --> 
     <value>Profile</value> 
    </option> 
</constraint> 

usernameは私ではありませんたぶん、フォームのユーザー名を削除するためのより良い方法はあり

登録フォーム(私は隠さに設定)、それはすべてのエラーを生成してはならない検証だ... ...

答えて

2

を行うことができ、あなた自身を作成し​​、元のFOSUserBundle今

<?php 
namespace Acme\UserBundle\Form\Type; 
use Symfony\Component\Form\FormBuilder; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('email', 'email') 
       ->add('plainPassword', 'repeated', array('type' => 'password')) 

       // your other custom fields, if any. 

    } 
} 

から、それを拡張し、RegistrationFormTypeをオーバーライドする必要があり、あなたオーバーライドされたフォームをサービスとして宣言し、FOSUserBundleコンフィグレーションファイルに、現在オーバーライドされたフォームを使用していることを伝える必要があります。 Here is the complete documentation

+0

sry、これは動作しません。それでもユーザー名を要求します。だから私は検証がまだ有効だと思う。 – tester

1

ヨどのvalidation.ymlファイルにもエンティティの検証情報を入れることができます。だから、あなたは適切な方法でフォームのユーザ名フィールドを削除するには

#validation.yml 
FQCN\Of\User\Entity: 
    constraints: 
    - FOS\UserBundle\Validator\Unique: 
     property: usernameCanonical 
     groups: [Profile] 
     message: fos_user.username.already_used 


    properties: 
    # property validations here 
関連する問題