我需要做的是通过添加'passwordagain'字段来自定义我的默认userForm,并将值设置为等于'password'字段的新字段。 我的代码:
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'));
} }
那里的setDefault方法似乎没有用。也许它仅适用于新用户,但这不是我在这里寻找的。 p>
谢谢, 拉杜。
P.S。:btw ...我使用symfony 1.4和推进器
答案 0 :(得分:2)
您的默认设置无效的原因是您正在使用sfWidgetFormInputPassword
小部件。
最佳做法是永远不要预先填写密码字段,这就是sfWidgetFormInputPassword
小部件为您所做的事情。
如果您想违反最佳做法,请执行以下操作,
$this->widgetSchema['passwordagain']->setOption('always_render_empty', false);
但是,我认真地建议你不要这样做。