Флэш-данные Codeigniter не работают - PullRequest
0 голосов
/ 11 мая 2018

Я использую CI3 и пытался использовать данные флэш-памяти.В моем контроллере я установил данные флэш-памяти, но они не отображаются в моем контроллере.Вот мой код в контроллере

public function add()
{
    $baseUrl=base_url();        
    $data=$this->input->post();


    $currency = new entities\AppCurrency();
    $currency->setCurrencyName($currencyName);


    try {
        $this->em->persist($currency);
        $this->em->flush();


        $this->session->set_flashdata("msg","1 Record Deleted");

        redirect($_SERVER['HTTP_REFERER']);


    } catch (Exception $ex) {
        $error_msg = $ex->getMessage();
    }

}

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

$msg=$this->session->flashdata("msg");
echo $msg;
print_r($msg);

if(trim($msg)!=""){
  echo"
    <div class='alert alert-success'>
    ".str_replace("~","<br />",$msg)."
    </div>
  ";
}

if(trim($msg)!="" && $msg=="error"){
  echo"
    <div class='alert alert-error'>
    Could not delete due to database error. Please try again later
    </div>
  ";
}

Пожалуйста, помогите мне решить эту проблему.Любая помощь будет оценена.Спасибо

1 Ответ

0 голосов
/ 12 мая 2018

Поскольку данные Flash - это функция, если искомая переменная не существует, она возвращает false или возвращает то, что вы в ней сохранили.

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

Контроллер

$this->session->set_flashdata("success","1 Record Deleted");
$this->session->set_flashdata("error","1 Record Deleted");
$this->session->set_flashdata("info","1 Record Deleted");
$this->session->set_flashdata("warning","1 Record Deleted");

Просмотр файла

   <?php if ($this->session->flashdata()): ?>

       <div class="flashData">

        <?php if($this->session->flashdata('success')): ?>
           <div class="alert alert-success" role="alert">
                <?php echo $this->session->flashdata('success') ?>
           </div>
        <?php endif ?>

        <?php if($this->session->flashdata('error')): ?>
           <div class="alert alert-danger" role="alert">
                <?php echo $this->session->flashdata('error') ?>
           </div>
        <?php endif ?>

        <?php if($this->session->flashdata('info')): ?>
           <div class="alert alert-info" role="alert">
                <?php echo $this->session->flashdata('info') ?>
           </div>
        <?php endif ?>

        <?php if($this->session->flashdata('warning')): ?>
            <div class="alert alert-warning" role="alert">
                <?php echo $this->session->flashdata('warning') ?>
            </div>
        <?php endif ?>
        </div>
      <?php endif ?>

Несколько "ошибок" с сессиями

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

Во-вторых, убедитесь, что ваш application/config/config.php правильно настроен См. Сеансы CI

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH . '/cache/sessions/';  //<- must be read/write directory for files.
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...