Подтвердить что ты не робот

Данные Flash CodeIgniter

Я борюсь с данными Flash в CodeIgniter.

Я в основном хочу:

добавить категорию в базу данных перенаправить пользователя на страницу показать успешное всплывающее сообщение "Ваша категория создана"

До сих пор я могу успешно добавить категорию в db, и пользовательский ввод проверен правильно, только я не знаю, как создать сообщение об успешном всплытии. (Я не хочу загружать представление успеха), просто перенаправляйте обратно туда, откуда они пришли, и покажите небольшое сообщение в верхнем углу или что-то в этом роде.

Являются ли данные флэш-памяти правильным способом?

4b9b3361

Ответ 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">&times;</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">&times;</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">&times;</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">&times;</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; ?>