2011-07-15 9 views
0

私はこれに新しいですし、私は長い時間をかけて問題を抱えています。私は次のコードを持っています。symfonyフォームのパスワード確認

<?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']; 
    } 

パスワードの検証は機能しません。誰にも分かりません。

答えて

2

sfForm->setValidators()は、内部で新しいvalidatorSchemaを再作成するので、以前に設定されたフォームバリデータはただクリアされます。残りの部分の下に$this->validatorSchema->setPostValidator()の電話をかけるだけで問題はありません。

+0

Muchas gracias、funciona perfectamente con tu respuesta;) - ありがとう、あなたの答えで完璧に動作します;) – JALF

関連する問題