CodeIgniter flashdata - PullRequest
       0

CodeIgniter flashdata

0 голосов
/ 29 ноября 2011

Я столкнулся с проблемой, которую просто не могу исправить. Я работаю над чем-то вроде CMS. И одна из функций - создание слайд-шоу изображений.

В одном контроллере я проверяю, существует ли слайд-шоу с определенным идентификатором, и если оно существует, оно должно взять данные и работать с ними, в противном случае установить сообщение об ошибке (флэш-данные CodeIgniter) и перенаправить на домашнюю страницу.

Код, который я использую для этого, следующий:

if($this->Mslideshow->slideshowExists($showid) === FALSE){
    echo 'I\'m getting here';
    $this->session->set_flashdata('error',$showid);
    redirect('admin/index','refresh');
}else{
    echo 'Slideshow exists';
}

А код функции slideshowExists():

public function slideshowExists($showid)
{
    $this->db->where('id',$showid)
             ->limit(1);

    $query = $this->db->get('slideshows');

    if($query->num_rows() < 1){
        return FALSE;
    }

    $this->currentquery = $query;

    return TRUE;
}

И проблема в том, что это очень странно. Если в результате я получу FALSE, все пойдет по плану. Сообщение об ошибке устанавливается и перенаправление переходит к «admin / index». Но если то, что я получаю, - ИСТИНА, тогда случается странная вещь. Я получаю echo с «Слайд-шоу существует», но я также получаю сообщение об ошибке.

Я все перепробовал, удалил куки. Сброс всех сессий и т. Д.

И еще более странно то, что когда я пытался вставить $showid, который я использую для проверки сообщения об ошибке, внезапно $showid становится 'img'. В то время как везде есть «1» или «2» ...

Надеюсь, кто-нибудь может помочь. Спасибо!

===== EDIT =====

Я попытался отредактировать код и упростить его. Прямо сейчас у меня есть этот код в моем контроллере:

public function slideshow($showid){
$query = $this->db->where('id',$showid)->get('slideshows');
if($query->num_rows() < 1){
    $this->session->set_flashdata('error','Slideshow doesn\'t exist.');
    redirect('admin/index','refresh');
}

$data['page'] = 'slideshow';
$data['title'] = 'Slideshows';
$this->scripts->load_scripts(array());
$this->scripts->load_functions(array());
$this->load->view('admin/dashboard_template.php',$data);
}

Когда я запускаю это с $showid, которого не существует, я получаю сообщение об ошибке после перенаправления в 'admin / index'. Когда я использую $showid, который существует, я получаю сообщение об ошибке, но не перенаправления, а только остальную часть кода.

Ответы [ 3 ]

1 голос
/ 20 августа 2013

вы можете получить данные флеш-памяти следующим образом

$error = $this->session->flashdata('error');
if($error)
{
echo $error;
}
1 голос
/ 29 ноября 2011

Я думаю, что вы должны прочитать ваши флэш-данные в вашем представлении:

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

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

$error = $this->session->flashdata('error');
if(isset($error)) {
     var_dump($error);
}

Также вы можете прочитать этот вопрос: CodeIgniter "flashdata" не работает

0 голосов
/ 06 мая 2019

Вы можете попробовать

if($this->session->flashdata('msg') != "")

Это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...