2012-01-11 22 views
0

symfonyでは。 。 。私のフォームは、私は、パスワードフィールドは空白にすることはできませんので、バリデータを追加しようとしている私のコントローラsymfony sfFormパスワード(必須と比較)

public function executeMyAccountPassword(sfRequest $request) { 
     $this->form = new ChangeMyPasswordForm(); 
     $this->validated=$request->getParameter('validated'); 

     $this->form->bind(array(
       'password' => $request->getParameter('password'), 
       'confirm' => $request->getParameter('confirm'), 
    )); 

     if ($request->isMethod('post')) { 

      if ($this->form->isValid()) { 
       $this->validated = true; 

       // get player object 
       $player = $this->getUser()->getProfile(); 
       $player->setPassword($request->getParameter('password')); 
      } 
     } 

でこの

<?php 

class ChangeMyPasswordForm extends sfForm { 

    const PASSWORD_REQUIRED_MSG = "We could not update your password. Your password can not be blank. Please enter at least one character for a password."; 

    protected static $labels = array(
      'password' => 'Your Password', 
     'confirm' => 'Re-enter Password', 
    ); 

    public function configure() 
    { 
     $this->setWidgets(array(
      'password' => new sfWidgetFormInputPassword(array()), 
      'confirm' => new sfWidgetFormInputPassword(array()), 
     )); 

     $this->setValidators(array(
      'password' => new sfValidatorPass(), 
      'confirm' => new sfValidatorPass(), 
     )); 

     $this->validatorSchema->setOption('allow_extra_fields', true); 

     $this->mergePostValidator(
      new sfValidatorSchemaCompare('password', sfValidatorSchemaCompare::IDENTICAL, 
       'confirm', array(), array(
        'invalid'=>'Passwords do not match. Please try again.' 
       ) 
      ) 
     ); 

     $this->mergePostValidator(new sfValidatorString()); 
     $this->widgetSchema->setLabels(self::$labels); 
    } 
} 

のように見えます。私は修正しようとしました

$this->setValidators(array('password'=>new sfValidatorString('required'=>'Please enter a password'))); 

しかし、すべてのフォームは、データが投稿されていない場合でもエラーを投げた。誰も私に2つの一致したパスワードフィールドを検証し、(フォーム提出後に)フィールドが空白にならないようにする方法の適切な例を誰にも教えてください。ありがとう!!

+0

との結合を行う必要があります意味? 1.4? – MrGlass

+0

また、どのようなエラーがありましたか? – MrGlass

+0

Yessir。 。 。 1.4エラーが発生していない。 「パスワードは一致しません」というエラーメッセージが表示されます。もう一度お試しください。それは正しいメッセージです。フォームが投稿された後にバリデーターを実行するだけです。 – TuK

答えて

2

あなたは2番目のエラーを持っている:あなたは、いくつかの括弧を欠落しています。 ifの下にいくつかの行を下に移動します。あなたはsymfonyのどのバージョンを使用している掲載

if ($request->isMethod('post')) 
{ 
    $this->form->bind(array(
    'password' => $request->getParameter('password'), 
    'confirm' => $request->getParameter('confirm'), 
)); 

    ... etc... 
} 
1

$ this-setValidatorsに構文エラーがあります。

$this->setValidators(array('password'=>new sfValidatorString('required'=>'Please enter a password')));

+0

ごめんなさい。投稿編集時にタイプしている必要があります。 。この行を追加すると、フォームはレンダリングされるとすぐにエラーメッセージを吐き出します。もちろん、フィールドは空白で、フォームはレンダリングされただけで、ユーザーはまだ何も入力していません。 – TuK

関連する問題