我一直在试图弄清楚如何使用这些闪存数据。我记得上次遇到困难,这一次,我似乎忘记了什么。
所以基本上,我正在尝试在某处设置一个闪光错误:
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
项目,因为它已被读取。
你需要做的是,当你再往下一点时,把它分配给一个变量,然后进行检查。