Domanda

Che cosa devo fare è personalizzare il form predefinito aggiungendo un campo 'passwordagain' e impostare il valore per il nuovo campo uguale al campo 'password'. Il mio codice:

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

} }

Il metodo setDefault non sembra funzionare. Forse funziona solo per i nuovi utenti, ma non è quello che sto cercando qui.

Grazie, Radu.

P.S .: btw ... io uso symfony 1.4 con Propel

È stato utile?

Soluzione

Il motivo predefinito non funziona è perché si sta utilizzando il widget di sfWidgetFormInputPassword.

Le migliori pratiche è quello di non pre-compilare un campo password, e questo è ciò che il widget di sfWidgetFormInputPassword fa per voi.

Se si vuole andare contro le migliori pratiche, effettuare le seguenti operazioni,

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

Tuttavia, vi consiglio sul serio che non farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top