2012-04-10 3 views
0

コントローラー内でFOSUserBundle固有のバリデーターを使用しようとしています。FOSUserBundleコントローラーの一意のバリデーター

<constraint name="FOS\UserBundle\Validator\Unique"> 
    <option name="property">dni</option> 
    <option name="message">The value for DNI is already registered</option> 
    <option name="groups"> 
     <value>AppRegistration</value> 
     <value>Profile</value> 
     <value>UpdateOldUsers</value> 
    </option> 
</constraint> 

しかし、私は、コントローラ上でそれを呼び出すとき(this次):私は私のvalidation.xmlで定義されているように私が検証されなければならない私のエンティティのどのプロパティを選択することができ

use FOS\UserBundle\Validator\Unique; 

public function acceptNewTosAction(Request $request) { 
    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 
     $uniqueConstraint = new Unique(array('property' => 'dni')); 
     $formData = $request->request->get('old_user'); 
     $dni = $formData['dni']; 
     $uniqueError = $this->get('validator')->validateValue($dni, $uniqueConstraint); 

私はこのエラーを取得します: Expected argument of type FOS\UserBundle\Model\UserInterface, string given

このように進むことはできますか?私はコントローラに独自のバリデータを実装する必要がありますか? 多くのありがとうございます。

答えて

0

私はこれがどのようにすべきかを理解しました。ただ、どのような検証グループ内のフォームを伝えることです:

public function getDefaultOptions(array $options) { 
    return array(
     'data_class' => 'Capsa\Bundle\ClubCommonBundle\Entity\User', 
     'validation_groups' => array('UpdateOldUsers') 

    ); 
} 

そしてコントローラで、if ($form->isValid())

をチェック
関連する問題