2011-10-28 10 views
7

Ho una pagina che contiene un modulo e quando un utente lo invia, i dati vanno a un controller e il controllore controlla la convalida, se c'è qualche errore esso reindirizza l'utente alla pagina precedente (la pagina che contiene il modulo), altrimenti invia i dati ai modelli.Come passare i dati degli errori di convalida tramite redirect()?

Per reindirizzare alla pagina precedente dal regolatore (se c'è qualche errore di convalida), ho il seguente codice

 redirect($this->input->post('redirect')); 

Il codice di cui sopra sta lavorando bene ma il problema è dopo che reindirizza l'utente al pagina precedente (la pagina che contiene il modulo) non visualizza gli errori di convalida.

Quindi, per favore, cortesemente, dimmi come passare le informazioni sull'errore di convalida attraverso questo codice di "reindirizzamento" che ho postato sopra e mostra il messaggio di errore di convalida su quella pagina?

Grazie in anticipo :)

Soluzione:

Nel mio controller:

$redirect=$this->input->post('redirect'); // << for this I have- <input name="redirect" type="hidden" value="<?= $this->uri->uri_string() ?>" />   in my view file 

    $this->session->set_flashdata('errors', validation_errors()); 
    redirect($this->input->post('redirect')); 

Nel mio file vista:

<?php 

    if ($this->session->flashdata('errors')){ //change! 
    echo "<div class='error'>"; 
    echo $this->session->flashdata('errors'); 
    echo "</div>"; 
    } 

    ?> 

Così posso passare i dati di errore di convalida attraverso reindirizzare dal controller alla pagina precedente

+1

Date un'occhiata http://stackoverflow.com/questions/2000621/codeigniter-how-to-redirect-properly-with-form-validation –

risposta

12

È possibile provare i flashdata dalla libreria di sessione di CI. Rende i dati disponibili per la successiva richiesta del server.

$this->session->set_flashdata('errors', validation_errors()); 

redirect($this->input->post('redirect')); 
+0

voi prego gentilmente dirmi dove esattamente dovrei mettere questo- $ this-> session-> set_flashdata ('errors', validation_errors()); Grazie in anticipo :) –

+0

Grazie mille. Ho trovato la soluzione :) :) –

+0

Ho messo le chiamate a set_flashdata() proprio prima delle chiamate al reindirizzamento. Quindi è disponibile nella pagina a cui viene reindirizzato. – michaeljdennis

Problemi correlati