показать значение переменной в редиректе? - PullRequest
1 голос
/ 26 июля 2011

как показать значение $ error в редиректе?
приведите пример.

if ( ! $files )
        {
            $error = array('error' => $this->upload->display_errors());
            redirect('hello/hi/insert_foreign');
        } 

Ответы [ 3 ]

1 голос
/ 26 июля 2011

То, что вы спрашиваете, немного бессмысленно, если вы думаете о действии, которое вы делаете.

Перенаправление заголовка - это HTTP-запрос к серверу, в данном случае для перенаправления на другой URL;обычно они содержат код состояния с определенным значением, например, 404 для страницы, которая не найдена и т. д. ( См. список кодов ошибок) .Вы не должны использовать его для передачи произвольной и пользовательской информации, предназначенной для пользователей и принадлежащих пользовательскому интерфейсу, например, для ответа после действия.

, если вы хотите сделать это, вам лучше использовать либозадержка по тайм-ауту с использованием php:

if ( ! $files )
        {
            $data['error'] = $this->upload->display_errors();
            $this->load->view('show_error',$data);
            sleep(5);
            redirect('hello/hi/insert_foreign', 'refresh');
        } 

или с использованием flash-данных CI, которая удобна для показа временных сообщений пользователям (более подробное объяснение см. на странице руководства здесь ):

  $this->session->flashdata('error');

Или можете использовать javascript:

В вашем контроллере:

$data['error'] = $this->upload->display_errors();
$this->load->view('show_error', $data);

И по вашему мнению show_error.php:

<?php echo $error; ?>
    <script type="text/javascript">
    $(document).ready(function(){
        var href = "<?php echo site_url('hello/hi/insert_foreing');?>";
        setTimeout(function() { window.location.href = href; }, 3000 );
    });
    </script>
0 голосов
/ 26 июля 2011
if ( ! $files )
{
     $error = array('error' => $this->upload->display_errors());
     $_SESSION['error'] = $error;
     redirect('hello/hi/insert_foreign');
}

//on other page
if(isset($_SESSION['error'])) {
    $error = $_SESSION['error'];
    //output error
    unset($_SESSION['error']);
}
0 голосов
/ 26 июля 2011

На основании вашей текущей спецификации я придумал следующее:

<?php
    echo implode('<br>', $error);
?>

EDIT

Показать ошибку на следующей странице. Я бы сделал это с $ _SESSION. Нет смысла добавлять что-либо с помощью метода GET. На самом деле, сеансы должны быть намного безопаснее, конечно, выглядеть лучше, и вам не нужно ничего преобразовывать из метода GET. Вместо этого просто получите исходную ошибку из массива.

<?php
    if (!$files) {
        $_SESSION['upload_errors'] = $this->upload->display_errors());
        redirect('hello/hi/insert_foreign');
    } 
?>

Страница, на которую вы перенаправлены:

<?php
    echo implode('<br>', $_SESSION['upload_errors']);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...