Flashdata показывает только ДРУГОЙ раз, когда код выполняется - PullRequest
1 голос
/ 23 сентября 2011

Я относительно новичок в CodeIgniter, поэтому я не уверен, является ли это просто плохим кодированием, или это проблема с тем, как я использую флэш-данные CodeIgniter. Для контекста: пользователь отправляет фразу в простой форме HTML. Фраза сравнивается с тем, что должно быть набрано (довольно просто, верно?). Эта правильная фраза меняется в зависимости от того, на каком этапе действия они находятся. Когда они получают неправильный текст, я пытаюсь использовать flashdata, чтобы показать сообщение об ошибке. Вот части контроллера, сопровождаемые представлением:

//Get step number
$step = $this->input->post('step');
$correct_text = array(
1 => 'TESTPHRASE',...
...

//If user enters the correct text           
$entered_text = strtoupper($this->input->post('entered_text'));
        if ($entered_text == $correct_text[$step]) 
        {   
            ...
        }
        //If user enters the incorrect text
        else 
        {
                $data['step'] = $step;
                $this->session->set_flashdata('entry_error', '<b>Sorry!</b>Your entry was incorrect. Be sure to carefully read the instructions!');
                $this->load->view('template', $data);
        }

Вот представление, которое запускается только каждый другой раз.

<?php 
if ($this->session->flashdata('entry_error'))
{ ?>
   <div id="game_error">
   <?php echo $this->session->flashdata('entry_error'); ?>
   </div>
<?php } ?>

1 Ответ

2 голосов
/ 23 сентября 2011

Из документов : CodeIgniter поддерживает «флэш-данные» или данные сеанса, которые будут доступны только для следующего запроса к серверу, а затем автоматически очищаются.

Вы устанавливаете flashdata и затем пытаетесь получить к нему доступ во время того же запроса. Он недоступен до следующего запроса, поэтому кажется, что он работает только через раз.

...