Как установить значение по умолчанию для дополнительного поля в форме symfony
-
19-09-2019 - |
Вопрос
Что мне нужно сделать, это настроить мою пользовательскую форму по умолчанию, добавив поле 'passwordagain' и установив значение в новое поле, равное полю 'password'.Мой код:
class UserForm extends BaseUserForm
{
public function configure()
{
$this->widgetSchema['password'] = new sfWidgetFormInputPassword();
$this->widgetSchema['passwordagain'] = new sfWidgetFormInputPassword();
$this->validatorSchema['password'] = new sfValidatorString();
$this->validatorSchema['passwordagain'] = new sfValidatorString();
$this->getValidatorSchema()->setPostValidator(
new sfValidatorSchemaCompare(
'password',
sfValidatorSchemaCompare::EQUAL,
'passwordagain',
array(),
array('invalid' => 'Passwords don\'t match')
));
$this->setDefault('passwordagain', $this->getObject()->getPassword());
$this->useFields(array('username', 'password', 'passwordagain'));
} }
Метод setDefault там, похоже, не работает.Возможно, это работает только для новых пользователей, но это не то, что я здесь ищу.
Спасибо, Раду.
P.S.:кстати...я использую symfony 1.4 с propel
Решение
Причина, по которой ваше значение по умолчанию не работает, заключается в том, что вы используете sfWidgetFormInputPassword
виджет.
Наилучшей практикой является никогда предварительно не заполнять поле пароля, и это то, что sfWidgetFormInputPassword
виджет делает это за вас.
Если вы хотите пойти вразрез с лучшими практиками, выполните следующие действия,
$this->widgetSchema['passwordagain']->setOption('always_render_empty', false);
Однако я серьезно рекомендую вам не делать этого.