Я относительно новичок в 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 } ?>