문제

내가해야 할 일은 'PasswordAgain'필드를 추가하여 기본 userform을 사용자 정의하고 '비밀번호'필드와 동일하게 새 필드로 값을 설정하는 것입니다. 내 코드 :

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 메소드는 작동하지 않는 것 같습니다. 아마도 그것은 새로운 사용자에게만 효과가 있지만, 그것은 내가 여기서 찾고있는 것이 아닙니다.

고마워요, 라두.

추신 : BTW ... Propel과 함께 Symfony 1.4를 사용합니다.

도움이 되었습니까?

해결책

기본값이 작동하지 않는 이유는 sfWidgetFormInputPassword 위젯.

모범 사례는 암호 필드를 미리 채우지 않는 것이며 이것이 바로 다음과 같습니다. sfWidgetFormInputPassword 위젯이 당신을 위해합니다.

모범 사례에 반대하고 싶다면 다음을 수행하십시오.

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

그러나 나는 당신이 그렇게하지 않는 것이 진지하게 추천합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top