в моем виде
<?php
class ChangeMyPasswordForm extends sfForm {
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::EQUAL,
'confirm', array(), array(
'invalid'=>'Passwords do not match. Please try again.'
)
)
);
$this->widgetSchema->setLabels(self::$labels);
}
}
в моем контроллере
public function executeMyAccountPassword(sfRequest $request) {
$this->form = new ChangeMyPasswordForm();
$this->validated=$request->getParameter('validated');
$this->form->bind(array(
$request->getParameter('password'),
$request->getParameter('confirm'),
));
if ($request->isMethod('post')) {
if ($this->form->isValid()) {
$this->validated = true;
var_dump($this->form->getErrorSchema());
} else {
var_dump($this->form->getErrorSchema());
}
}
}
на мой взгляд
<?php if ($validated): ?>
<div class="success">
<b>Success</b>
</div>
<? endif; ?>
<?php if ($form->hasGlobalErrors() || $form->hasErrors()): ?>
<div class="error">
<b>FAIL !!</b>
<ul>
<?php foreach ($form->getGlobalErrors() as $name => $error): ?>
<li>
<?php echo $error ?>
</li>
<?php endforeach; ?>
<?php if($form['password']->hasError()): ?>
<li>
<?php echo $form['password']->getError() ?>
</li>
<?php endif; ?>
</ul>
</div>
<? endif; ?>
Я не могу понять, что я делаю неправильно, не имеет значения, совпадают пароли или нет, форма всегда возвращает успех (если я не изменю сравнение на не равное) Как я могу определить, возвращаются ли значения обратно в форму? Я делаю что-то явно не так?