2011-10-28 10 views
7

Mam stronę zawierającą formularz, a kiedy dowolny użytkownik ją przesyła, dane trafiają do kontrolera, a kontroler sprawdza poprawność, jeśli wystąpi jakikolwiek błąd, przekierowuje użytkownika na poprzednią stronę (stronę zawierającą formularz), w przeciwnym razie wysyła dane do modeli.Jak przekazać dane o błędach walidacji poprzez przekierowanie()?

przekierować do poprzedniej strony z kontrolera (jeżeli istnieje jakikolwiek błąd walidacji), mam następujący kod

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

Powyższy kod działa poprawnie, ale problem jest po to przekierowuje użytkownika do poprzednia strona (strona zawierająca formularz) nie wyświetla błędów sprawdzania poprawności.

Czy mógłbyś uprzejmie powiedzieć mi, jak przekazać informacje o błędach walidacji za pośrednictwem tego "przekierowania" kodu, który napisałem powyżej i pokazać komunikat o błędzie sprawdzania poprawności na tej stronie?

z góry dzięki :)

Rozwiązanie:

W moim kontrolera:

$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')); 

w moim pliku Widok:

<?php 

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

    ?> 

ten sposób mogę przekazać dane o błędach walidacji poprzez przekierowanie z kontrolera na poprzednią stronę

+1

Weź http://stackoverflow.com/questions/2000621/codeigniter-how-to-redirect-properly-with-form-validation wygląd –

Odpowiedz

12

Możesz wypróbować flashdata z biblioteki sesji CI. Dzięki temu dane są dostępne dla następnego żądania serwera.

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

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

to proszę uprzejmie mi powiedzieć, gdzie dokładnie należy umieścić to- $ this-> session-> set_flashdata ('errors', validation_errors()); Z góry dzięki :) –

+0

Wielkie dzięki. Znalazłem rozwiązanie. :) –

+0

Stawiam wywołania funkcji set_flashdata() tuż przed wywołaniem przekierowania. Następnie jest dostępny na stronie, do której przekierowuje. – michaeljdennis

Powiązane problemy