2010-02-07 6 views
0

Ce que je dois faire est de personnaliser mon formulaire par défaut en ajoutant un champ 'passwordagain' et définir la valeur du nouveau champ égale au champ 'password'. Mon code:Comment définir la valeur par défaut pour un champ supplémentaire dans une forme symfony

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 il ne semble pas fonctionner. Peut-être que cela ne fonctionne que pour les nouveaux utilisateurs, mais ce n'est pas ce que je cherche ici.

Merci, Radu.

P.S .: btw ... i utiliser symfony 1.4 Propel

Répondre

2

La raison pour laquelle votre défaut ne fonctionne pas parce que vous utilisez le widget sfWidgetFormInputPassword.

La meilleure pratique consiste à ne jamais pré-remplir un champ de mot de passe, et c'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.

+0

Vous avez raison. Quand je pense plus à ce sujet, le mot de passe dans db est md5, donc il ne sera pas utile si je rends le champ avec cette valeur. Merci pour l'aide. –

Questions connexes