0

コントローラーで FOSUserBundle Unique バリデーターを使用しようとしています。my で定義したようvalidation.xmlに、エンティティのどのプロパティを検証するかを選択できます。

<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>

しかし、コントローラーで呼び出すと(これに続い):

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

そのように進めることは可能ですか?コントローラーに Unique バリデーターを実装するにはどうすればよいですか? どうもありがとう。

4

1 に答える 1

0

私はこれがどうあるべきかを理解しました。検証グループが何であるかをフォームに伝えるだけです:

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

    );
}

そして、コントローラーで、チェックしますif ($form->isValid())

于 2012-04-11T10:33:39.273 に答える