如何将默认值设置为symfony表单中的额外字段

时间:2010-02-07 19:15:05

标签: php symfony1 propel symfony-1.4

我需要做的是通过添加'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.S。:btw ...我使用symfony 1.4和推进器

1 个答案:

答案 0 :(得分:2)

您的默认设置无效的原因是您正在使用sfWidgetFormInputPassword小部件。

最佳做法是永远不要预先填写密码字段,这就是sfWidgetFormInputPassword小部件为您所做的事情。

如果您想违反最佳做法,请执行以下操作,

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

但是,我认真地建议你不要这样做。