为什么我无法在CodeIgniter中获取下一个服务器请求的Flashdata


Why can’t I get my Flashdata for my next server request in CodeIgniter?

我一直在试图弄清楚如何使用这些闪存数据。我记得上次遇到困难,这一次,我似乎忘记了什么。

所以基本上,我正在尝试在某处设置一个闪光错误:

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);
 } 

在这种观点下,我试图得到那个闪光错误:

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

有人可以解释我如何使用它,尽管官方文档说"仅适用于下一个服务器请求,然后自动清除">

来自 Codeigniters 文档:

如果您发现需要通过以下方式保留闪存数据变量 其他请求,您可以使用 keep_flashdata(( 函数执行此操作。

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

更新:

问题似乎在这里:

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

试试这个:

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

正如你所做的那样

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

您实际上是在删除flashError项目,因为它已被读取。

你需要做的是,当你再往下一点时,把它分配给一个变量,然后进行检查。