web-dev-qa-db-ja.com

CodeIgniter Flashデータ

CodeIgniterでFlashデータに苦労しています。

私は基本的に:

データベースにユーザーを追加して、ユーザーをページにリダイレクトします。「あなたのカテゴリーが作成されました」という成功ポップアップメッセージが表示されます。

これまでのところ、カテゴリをデータベースに正常に追加でき、ユーザー入力が正しく検証されました。ただ、ポップアップ成功メッセージの作成方法がわからないだけです。 (成功ビューをロードしたくありません)、元の場所にリダイレクトして、上隅などに小さなメッセージを表示します。

フラッシュデータは正しい方法ですか?

15
Tom

コントローラーで:

//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>
39
Mudshark

異なるセッションメッセージを実行できるかどうかは、コントローラーから表示するものに応じて異なります。 CSSバックボーンとしてBootstrapを使用していることに注意してください。

ビューで、

成功の場合、

<?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

5
William Kheng

これを試すことができます-

コントローラ:

    $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 } ?>
1
Walk

三項演算子を使用する:

フラッシュデータの設定:

$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;?>
1
saurabh kamble
//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; ?>
0
erickie007

CodeIgniterの Flashデータ は、PHPsession変数を利用します。セッション名に_:old_を配置して、1回の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');
_
0
Phil

はい、フラッシュデータが利用可能かどうかを確認し、利用可能な場合はメッセージを表示し、利用できない場合は表示しないでください。それと同じくらい簡単。

追伸POSTリクエストの後、常にリダイレクトを行う必要があります。

0
hndr