Come impostare il valore predefinito per un campo extra in un form di symfony
-
19-09-2019 - |
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
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.