Как установить значение по умолчанию для дополнительного поля в форме symfony

StackOverflow https://stackoverflow.com/questions/2217924

Вопрос

Что мне нужно сделать, это настроить мою пользовательскую форму по умолчанию, добавив поле '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);

Однако я серьезно рекомендую вам не делать этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top