0

これらのフラッシュデータの使用方法を理解しようとしています。前回は苦労したのを覚えていますが、今回も何か忘れているようです。

基本的に、どこかにフラッシュエラーを設定しようとしています:

if(!$this->paypal_pro->APICallSuccessful($PayPalResult['ACK']))
  {
       $this->session->set_flashdata('flashError',  
           array('Errors'=>$PayPalResult['ERRORS']));
       redirect('main/form');
  } 

そして、私のメイン/フォームで私は得ました:

function Form()
 {
// Process validation form
 if ($this->form_validation->run() == FALSE)
 {
      //IF the validation process hasn't been run or there are validation errors
       $this->parser->parse('template/template', $data);
 } 

そしてそのビューで、私はその flashError を取得しようとしています:

<?php if($this->session->flashdata('flashError')):?>
  <div class='flashError'>
 <?php  
  $flashError=$this->session->flashdata('flashError');
  foreach( $flashError['Errors'] as $Error) {
     echo $Error['L_SHORTMESSAGE'].' ('.$Error['L_ERRORCODE'].'):';
     echo '<br/>';
     echo $Error['L_LONGMESSAGE'];
  }
 ?>
  </div>
 <?php endif?> 

その変数には何もありません。それを var_dump しようとすると、false が返されます。

公式ドキュメントには「次のサーバー要求でのみ利用可能で、その後自動的にクリアされる」と書かれていますが、誰かがそれを使用する方法を説明できますか?</p>

4

2 に答える 2

0

あなたがやっているように

if($this->session->flashdata('flashError'))

flashError読んだので、実際にアイテムを削除しています。

あなたがする必要があるのは、もう少し下にあるので、それを変数に割り当ててからチェックを行うことです。

于 2012-08-02T07:05:43.053 に答える
0

Codeigniters のドキュメントから:

追加のリクエストで flashdata 変数を保存する必要がある場合は、 keep_flashdata() 関数を使用して保存できます。

$this->session->keep_flashdata('item');

アップデート:

問題はここにあるようです:

$this->session->set_flashdata('flashError',  
           array('Errors'=>$PayPalResult['ERRORS']));

これを試してください:

$this->session->set_flashdata(array('Errors'=>$PayPalResult['ERRORS']));
于 2012-08-02T06:55:39.883 に答える