Как установить значение по умолчанию для дополнительного поля в форме Symfony - PullRequest
0 голосов
/ 07 февраля 2010

Что мне нужно сделать, это настроить мою пользовательскую форму по умолчанию, добавив поле «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 не работает. Возможно, это работает только для новых пользователей, но это не то, что я ищу здесь.

Спасибо, Radu.

P.S .: кстати ... я использую Symfony 1.4 с Propel

1 Ответ

2 голосов
/ 08 февраля 2010

Причина, по которой ваши настройки по умолчанию не работают, заключается в том, что вы используете виджет sfWidgetFormInputPassword.

Рекомендуется никогда не заполнять поле пароля заранее, и именно это виджет sfWidgetFormInputPassword делает для вас.

Если вы хотите пойти против лучшей практики, сделайте следующее,

$this->widgetSchema['passwordagain']->setOption('always_render_empty', false);

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

...