Foros del Web » Programando para Internet » PHP » CodeIgniter »

Problema con redirect y form_validator

Estas en el tema de Problema con redirect y form_validator en el foro de CodeIgniter en Foros del Web. Buenos dias ante todo Estoy haciendo una funcionalidad update donde tengo una vista(vista1) que me lista los enlaces a los diferente elemento que quiero hacer ...
  #1 (permalink)  
Antiguo 16/04/2011, 08:04
 
Fecha de Ingreso: enero-2011
Mensajes: 74
Antigüedad: 13 años, 9 meses
Puntos: 4
Problema con redirect y form_validator

Buenos dias ante todo
Estoy haciendo una funcionalidad update donde tengo una vista(vista1) que me lista los enlaces a los diferente elemento que quiero hacer update pasando su id y luego se muestra un formulario para actualizar esos datos(vista2) y si falla la validacion de los campos pues quiero mostrar ese formulario con los errores que hay y sino pues hacer el update. Mi problema es que si el run('payment_rule') da false y uso redirect no se me muestran los validations _errors en la vista2, y si uso el $this->payment_update_view($id_payment); pues no puedo luego recargar la pagina pues se pierde el $id_payment y me da error:
if ($this->form_validation->run('payment_rule') == FALSE) {
//$this->payment_update_view($id_payment);
redirect(base_url().'index.php/paymentpayment_update_view'.$id_payment,'location' );
} else {actualizo y rediracciono a pag de exito}

Muchas gracias de antemano de antemano
  #2 (permalink)  
Antiguo 16/04/2011, 14:04
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: Problema con redirect y form_validator

creo que en vez de hacer un redirect tiene que mostrar de nuevo la vista del formulario pasandole la variable donde estan los errores, o bien guardar los errores en session y recien ahí utilizar redirect.

salu2
  #3 (permalink)  
Antiguo 16/04/2011, 14:39
 
Fecha de Ingreso: enero-2011
Mensajes: 74
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Problema con redirect y form_validator

Gracias por responderme
No he resuelto pues el problema es que los mensajes de error los muestro en la vista con la funcion validations_errors de la clase form_validation que es propia de codeigniter.He estado investigando y con redirect no me funciona pues los errores la clase los pasa automatico por lo headers y al hacer redirect se pierden estos , teniendo que usar por tanto $this->load->view(vista_a _redirecionar) pero en este caso se muestran bien los errores pero se pierde el parámetro identificador del objeto a modificar en la url

Código PHP:
if ($this->form_validation->run('validation_rule') == FALSE) {
            
$this->payment_update_view($id_payment);            
        } 
Este es el caso antes de enviar el form al metodo del codigo anterior,tiene el parametro 4
http://localhost/GreenwiseVitamins_proyect/index.php/payment/payment_update/4
Esta es despues de entrar en el if y volver a la vista, pierde el parámetro aunque se lo mande al metodo $this->payment_update_view($id_payment); ,si doy enter en la barra de direciones me explota al no tenerlo ,si hago f5 o actualizar no hay problemas o sea solo se rompe si doy enter en la url
Discupa si soy reiterativo es que es complicado de explicar
Gracias de antemano
http://localhost/GreenwiseVitamins_proyect/index.php/payment/payment_update
  #4 (permalink)  
Antiguo 19/04/2011, 13:05
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: Problema con redirect y form_validator

mmm te dejo un ejemplo de un controlador y la vista que use para una aplicacion web a lo mejor te sirve
controlador:
Código PHP:
Ver original
  1. function form_users($id='') {
  2.  
  3.         $user= array();
  4.         $error='';
  5.         if($this->input->post('action')) {
  6.         $rules['email']       = "required|valid_email";
  7.         $rules['password']    = "required";
  8.         $rules['username']    = "required";
  9.  
  10.         $this->validation->set_rules($rules);
  11.  
  12.         $fields['email']       = "Email";
  13.         $fields['password']    = "Password";
  14.         $fields['username']    = "Username";
  15.  
  16.         $this->validation->set_fields($fields);
  17.  
  18.         $this->validation->set_error_delimiters('<p class="error">', '</p>');
  19.  
  20.         if ($this->validation->run()) {
  21.  
  22.             if($this->input->post('id')=='') {
  23.             //insert registered user
  24.             $this->redux_auth->email_activation = false;
  25.             $this->redux_auth->default_group = 2;
  26.             //$psw = $this->randomText(5);
  27.             $redux = $this->redux_auth->register
  28.                 (
  29.                 $this->input->post('username'),
  30.                 $this->input->post('password'),
  31.                 $this->input->post('email'),
  32.                 'mvrelocations',
  33.                 'users'
  34.             );
  35.             if($redux) {
  36.                 $error = "Los datos se guardaron correctamente<bbr/>";
  37.             }
  38.             else {
  39.                 $error = "Los datos no se guardaron correctamente<bbr/>";
  40.             }
  41.             }
  42.             else {
  43.             $user = $this->admin_model->getUser($this->input->post('id'));
  44.             $pass = sha1($user[0]->hash.$_POST['password']);
  45.             $_POST['password'] = $pass;
  46.             unset($_POST['action']);
  47.             unset($_POST['enviar']);
  48.  
  49.             $id = $this->admin_model->saveUser($_POST);
  50.             if($id=='') {
  51.                 $error = "Los datos se guardaron correctamente<bbr/>";
  52.             }
  53.             else {
  54.                 $error = "Los datos no se guardaron correctamente<bbr/>";
  55.             }
  56.             }
  57.         }
  58.         else {
  59.             $error = $this->validation->error_string;
  60.         }
  61.         }
  62.         else {
  63.         $user = $this->admin_model->getUser($id);
  64.         }
  65.  
  66.         $data = array(
  67.             'list_users' => $this->admin_model->list_users(),
  68.             'pst_data' => $user,
  69.             'error' => $error,
  70.         );
  71.         $this->template->write_view('content', 'manager/form_users', $data);
  72.         $this->template->render();
  73.     }

vista:
Código HTML:
Ver original
  1. function borrarUser(id){
  2.     if(confirm('Desea eliminar este registro?')){
  3.     window.location=siteURL+"manager/delete_user/"+id;
  4.     }
  5. }
  6. <table summary="Submitted table designs">
  7.     <caption>Table designs</caption>
  8.     <thead>
  9.     <tr>
  10.             <th scope="col">Id Usuario</th>
  11.             <th scope="col">Nombre</th>
  12.             <th scope="col">E-mail</th>
  13.             <th scope="col">Edici&oacute;n</th>
  14.         <th scope="col">&nbsp;</th>
  15.     </tr>
  16.     </thead>
  17.     <tbody>
  18.     <?
  19.        foreach($list_users as $l):
  20.            ?>
  21.             <tr>
  22.                 <td><?=$l->id?></td>
  23.                 <td><?=$l->username?></td>
  24.                 <td><?=$l->email?></td>
  25.                 <td><a href="<?=base_url()?>manager/form_users/<?=$l->id?>">Edit</a></td>
  26.         <td><a class="borrar" href="javascript:;" onclick="borrarUser(<?=$l->id?>)">Borrar</a></td>
  27.             </tr>
  28.             <?
  29.        endforeach;
  30.        ?>
  31.     </tbody>
  32.  
  33. <?php echo $error;?>
  34. <?php echo form_open('manager/form_users'); ?>
  35.  
  36.     <h3>INGRESO DE USUARIOS</h3>
  37.     <p>
  38.     <label>Nombre de usuario</label>
  39.     <?php echo form_input(array( 'name' => 'username','id'=> 'username','value' => set_value('username', @$pst_data[0]->username))); ?>
  40.     </p>
  41.  
  42.     <p>
  43.     <label>Contrase&ntilde;a </label>
  44.     <?php echo form_input(array( 'name' => 'password', 'id' => 'password')); ?>
  45.     </p>
  46.  
  47.     <p>
  48.     <label>E-mail</label>
  49.     <?php echo form_input(array( 'name' => 'email', 'id' => 'email','value' => set_value('email', @$pst_data[0]->email))); ?>
  50.     </p>
  51.  
  52.    
  53.     <?php echo form_hidden('action', 'ok'); ?>
  54.     <?php echo form_hidden('id', @$pst_data[0]->id); ?>
  55.     <?php echo form_submit('enviar', 'Enviar', 'class="button"') ?>
  56.  
  57.  
  58. <?php echo form_close(); ?>
  #5 (permalink)  
Antiguo 19/04/2011, 17:29
 
Fecha de Ingreso: enero-2011
Mensajes: 74
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Problema con redirect y form_validator

He resuelto ya mi problema ayudado por su ejemplo
muchas gracias por el tiempo empleado
  #6 (permalink)  
Antiguo 20/04/2011, 08:35
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Respuesta: Problema con redirect y form_validator

no hay de que, salu2

Etiquetas: frameworks-y-php-orientado-a-objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:38.