symfony表单中的密码验证

时间:2011-07-15 22:36:08

标签: php symfony1 symfony-1.4

我是新手,我有很长一段时间的问题,我有以下代码。

<?php

class RegistroUsuariosForm extends sfForm {

  public function configure() {

    $this->setWidgets(array(
        'password1' => new sfWidgetFormInputPassword(),
        'password2' => new sfWidgetFormInputPassword(),
        'avatar'    => new sfWidgetFormInputFile(),
        ));

    $this->widgetSchema->setLabels(array(
        'password1' => 'Password',
        'password2' => 'Repetir Contraseña',
        'avatar'    => 'Imagen a mostrar'
    ));

    $this->widgetSchema->setNameFormat('RegUsuario[%s]');

    $this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('password1', '==', 'password2',
                array(),
                array('invalid' => 'Las contraseñas no son iguales')));

    $this->setValidators(array(
        'password1' => new sfValidatorString(array('min_length' => 4),
                array('required' => 'Campo obligatorio',
                    'min_length' => 'Minimo %min_length% caracteres.',)),
        'password2' => new sfValidatorString(array('min_length' => 4),
                array('required' => 'Campo obligatorio',
                    'min_length' => 'Minimo %min_length% caracteres.',)),
        'avatar' => new sfValidatorFile(
                array(
                    'required' => false,
                    'max_size' => (1048576 * 2),
                    'mime_types' => 'web_images',
                ),
                array(
                    'required' => 'Campo obligatorio',
                    'max_size' => 'El archivo es muy grande (máximo de 2Mb).',
                    'mime_types' => 'El tipo de archivo es invalido (%mime_type%).',
                    'partial' => 'El archivo subido fue sólo parcialmente cargado.',
                    'no_tmp_dir' => 'Falta la carpeta temporal.',
                    'cant_write' => 'No se pudo guardar el archivo en el servidor.',
                    'extension' => 'De carga del archivo se detuvo, por extensión.'
        )),
    ));
  }
}

  public function executeActivarinvitacion(sfWebRequest $request) {
    $key = $request->getParameter('key');
    $this->formulario = new RegistroUsuariosForm();
    if (($dato = Invitaciones::TraerDatosDeInvitacion($key))) {
      $this->key = $key;
      if ($request->isMethod('post')) {
        $RegUsuario = $request->getParameter('RegUsuario');
        $Avatar = $request->getFiles('RegUsuario');
        $this->formulario = new RegistroUsuariosForm();
        $this->formulario->bind($RegUsuario, $Avatar);
        if ($this->formulario->isValid()) {

          echo $RegUsuario['password1'];
          echo ' - '.$RegUsuario['password2'];
          exit();
        }
      }
    } else {
      $this->forward404();
    }
    $this->usuario = $dato['usuario'];
    $this->correo = $dato['correo'];
  }

验证密码不起作用,有人知道吗?

1 个答案:

答案 0 :(得分:3)

sfForm->setValidators()在内部重新创建一个新的validatorSchema,因此您之前设置的表单验证程序已被清除。只需将$this->validatorSchema->setPostValidator()的呼叫置于其余部分之下即可。