Данные Flash CodeIgniter
Я борюсь с данными Flash в CodeIgniter.
Я в основном хочу:
добавить категорию в базу данных
перенаправить пользователя на страницу
показать успешное всплывающее сообщение "Ваша категория создана"
До сих пор я могу успешно добавить категорию в db, и пользовательский ввод проверен правильно, только я не знаю, как создать сообщение об успешном всплытии. (Я не хочу загружать представление успеха), просто перенаправляйте обратно туда, откуда они пришли, и покажите небольшое сообщение в верхнем углу или что-то в этом роде.
Являются ли данные флэш-памяти правильным способом?
Ответы
Ответ 1
В вашем контроллере:
//add to db
// load session library if not auto-loaded
$this->session->set_flashdata('msg', 'Category added');
redirect('controller/method');
В представлении:
<script>
// assumes you're using jQuery
$(document).ready(function() {
$('.confirm-div').hide();
<?php if($this->session->flashdata('msg')){ ?>
$('.confirm-div').html('<?php echo $this->session->flashdata('msg'); ?>').show();
<?php } ?>
});
</script>
Ответ 2
Ваше сообщение может отличаться от того, что вы передаете для просмотра с вашего контроллера. Отмечено, что я использую Bootstrap в качестве моей основы CSS.
В поле зрения
Для случая успеха
<?php if ($this->session->flashdata('category_success')) { ?>
<div class="alert alert-success"> <?= $this->session->flashdata('category_success') ?> </div>
<?php } ?>
Для случая ошибки
<?php if ($this->session->flashdata('category_error')) { ?>
<div class="alert alert-danger"> <?= $this->session->flashdata('category_error') ?> </div>
<?php } ?>
В контроллере
Для случая успеха
$this->session->set_flashdata('category_success', 'Success message.');
redirect("To your view");
Для случая ошибки
$this->session->set_flashdata('category_error', 'Error message.');
redirect("To your view");
Для получения дополнительной информации вы можете посетить: http://www.codeigniter.com/userguide2/libraries/sessions.html
Ответ 3
с использованием тернарного оператора:
Установка данных Flash:
$this->session->set_flashdata('insertproduct', 'Product added successfully');
$this->session->set_flashdata('deleteproduct','Delete added successfully');
Использование данных сеанса Flash:
<?php if($this->session->flashdata('insertproduct')):echo $this->session->flashdata('insert');endif; ?><br/>
<?php if($this->session->flashdata('delete')): echo $this->session->flashdata('delete'); endif;?>
Ответ 4
Вы можете попробовать это -
Контроллер:
$this->session->set_flashdata('success', 'Success Message...');
OR
$this->session->set_flashdata('error', 'Error Message...');
OR
$this->session->set_flashdata('warning', 'Warning Message...');
OR
$this->session->set_flashdata('info', 'Info Message...');
Вид:
<?php if($this->session->flashdata('success')){ ?>
<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert">×</a>
<strong>Success!</strong> <?php echo $this->session->flashdata('success'); ?>
</div>
<?php } else if($this->session->flashdata('error')){ ?>
<div class="alert alert-danger">
<a href="#" class="close" data-dismiss="alert">×</a>
<strong>Error!</strong> <?php echo $this->session->flashdata('error'); ?>
</div>
<?php } else if($this->session->flashdata('warning')){ ?>
<div class="alert alert-warning">
<a href="#" class="close" data-dismiss="alert">×</a>
<strong>Warning!</strong> <?php echo $this->session->flashdata('warning'); ?>
</div>
<?php } else if($this->session->flashdata('info')){ ?>
<div class="alert alert-info">
<a href="#" class="close" data-dismiss="alert">×</a>
<strong>Info!</strong> <?php echo $this->session->flashdata('info'); ?>
</div>
<?php } ?>
Ответ 5
Да, просто проверьте, доступны ли данные флэш-памяти, если это так, покажите сообщение, если это не так, а затем не показывайте его. так же просто.
p.s. вы всегда должны делать перенаправление после запроса POST.
Ответ 6
CodeIgniter Данные Flash использует переменные PHP
session
. Он помещает :old
в имя сеанса, чтобы он длился только один вызов db. Это очень важная функция и цель - делать то, что вы хотите сделать, поэтому да, это очень хороший способ обойти эти вещи.
Помните, если вы собираетесь использовать это, вы должны включить $this->session->library('session')
Если вы не знаете, как реально использовать flash_data
, я бы предложил прочитать документы, которые я ранее связывал.
$this->session->set_flashdata(
'category_success',
'Your category has been created'
);
redirect(); //location
echo $this->session->flashdata('category_success');
Ответ 7
//Set Flash messages
$this->session->set_flashdata('post_created', 'Your post has been Posted!');
redirect('Posts/index');
//In Posts View you will have
<?php if($this->session->flashdata('post_created')) : ?>
<?php echo '<p class="alert alert-success"> ' .$this->session->flashdata('post_created'). '</p>'; ?>
<?php endif; ?>