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つの一致したパスワードフィールドを検証し、(フォーム提出後に)フィールドが空白にならないようにする方法の適切な例を誰にも教えてください。ありがとう!!
との結合を行う必要があります意味? 1.4? – MrGlass
また、どのようなエラーがありましたか? – MrGlass
Yessir。 。 。 1.4エラーが発生していない。 「パスワードは一致しません」というエラーメッセージが表示されます。もう一度お試しください。それは正しいメッセージです。フォームが投稿された後にバリデーターを実行するだけです。 – TuK