Pergunta

O que eu preciso fazer é personalizar o meu formulário de usuário padrão, adicionando um campo 'passwordagain' e defina o valor para o novo campo igual ao campo 'password'. Meu código:

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'));

} }

O método setDefault lá não parece trabalho. Talvez ele só funciona para novos usuários, mas isso não é o que eu estou procurando aqui.

Obrigado, Radu.

P.S .: btw ... eu uso symfony 1.4 com propulsão

Foi útil?

Solução

A razão o seu padrão não está funcionando é porque você está usando o widget sfWidgetFormInputPassword.

A melhor prática é nunca pré-preencher um campo de senha, e é isso que o sfWidgetFormInputPassword Widget faz por você.

Se você quer ir contra a melhor prática, fazer o seguinte,

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

No entanto, eu recomendo seriamente que você não fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top