Comment définir la valeur par défaut à un champ supplémentaire sous une forme symfony
-
19-09-2019 - |
Question
Qu'est-ce que je dois faire est de personnaliser mon formUtilisateur par défaut en ajoutant un champ « passwordagain » et définissez la valeur sur le nouveau champ égal au champ « mot de passe ». Mon code:
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'));
} }
La méthode setDefault ne semble pas là pour travailler. Peut-être il ne fonctionne que pour les nouveaux utilisateurs, mais ce n'est pas ce que je cherche ici.
Merci, Radu.
P.S .: BTW ... i utilise 1,4 à symfony propel
La solution
La raison pour laquelle votre défaut ne fonctionne pas parce que vous utilisez le widget sfWidgetFormInputPassword
.
Les meilleures pratiques est de ne jamais pré-remplir un champ de mot de passe, ce qui est ce que le widget sfWidgetFormInputPassword
fait pour vous.
Si vous voulez aller à l'encontre des meilleures pratiques, procédez comme suit,
$this->widgetSchema['passwordagain']->setOption('always_render_empty', false);
Cependant, je recommande sérieusement vous ne le faites pas.