CodeIgniterでFlashデータに苦労しています。
私は基本的に:
データベースにユーザーを追加して、ユーザーをページにリダイレクトします。「あなたのカテゴリーが作成されました」という成功ポップアップメッセージが表示されます。
これまでのところ、カテゴリをデータベースに正常に追加でき、ユーザー入力が正しく検証されました。ただ、ポップアップ成功メッセージの作成方法がわからないだけです。 (成功ビューをロードしたくありません)、元の場所にリダイレクトして、上隅などに小さなメッセージを表示します。
フラッシュデータは正しい方法ですか?
コントローラーで:
//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>
異なるセッションメッセージを実行できるかどうかは、コントローラーから表示するものに応じて異なります。 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
これを試すことができます-
コントローラ:
$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 } ?>
三項演算子を使用する:
フラッシュデータの設定:
$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;?>
//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; ?>
CodeIgniterの Flashデータ は、PHP
session
変数を利用します。セッション名に_: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');
_
はい、フラッシュデータが利用可能かどうかを確認し、利用可能な場合はメッセージを表示し、利用できない場合は表示しないでください。それと同じくらい簡単。
追伸POSTリクエストの後、常にリダイレクトを行う必要があります。