繁体   English   中英

在CodeIgniter中发送数据和重定向

[英]Sending data along with a redirect in CodeIgniter

我有一个简单的C(CRUD)函数,我想从我写的“插入”函数中发送一条消息(错误或成功)以及我的重定向。 有没有办法使用重定向来粘贴POST字段?

在伪代码我有:

function view_all{
    //set up some initial variables
    $this->load->view(viewing_page, $data)
}

function insert{
    if ($this->db->insert(my_table, $_POST)){
        $message = "All's well";
    }
    else {
        $message = "whoops!";
    }
    redirect(view_all);
}

所以view_page理想上会有类似的东西

if (isset($message)){
    echo $message
}

所以在第一次通过时,我没有看到任何消息,并且当/如果有插入时,它会弹出与消息相同的页面。 谢谢!

我相信redirect使用header() 如果是这样,我不相信你可以发送数据和位置标题。 您可以使用会话变量或(不太好)将查询字符串附加到位置URL来完成相同的操作。

对于在CodeIgniter中执行此操作的“接受”方式,请查看会话类文档页面的一半以上。

CodeIgniter支持“flashdata”或仅可用于下一个服务器请求的会话数据,然后自动清除。 这些非常有用,通常用于信息或状态消息(例如:“记录2已删除”)。

Flash消息上的这个(现已删除 - 这是一个存档版本帖子涵盖了查询字符串和会话var方法。

更新 :为了总结现在删除的帖子,它显示了对邮件进行urlencoding并附加为查询字符串(来自帖子的示例):

header('Location: http://www.example.com/index.php?message='.urlencode($message));

并使用两个框架设置'flash'变量(例如post):

//Zend Framework
$flashMessenger = $this->_helper->FlashMessenger;
$flashMessenger->setNamespace('actionErrors');
$flashMessenger->addMessage($message);

//CakePHP
$this->Session->setFlash('Your post has been saved.');
$this->redirect('/news/index');

当然你可以直接使用$_SESSION做同样的事情(我的例子):

//first request
$_SESSION['flash'] = 'This is a simple flash message.';
//next request
$flash = $_SESSION['flash'];
unset($_SESSION['flash']); //flash is one time only

您可以在CI 会话类中使用Flashdata。 这就是文件中所说的:

CodeIgniter支持“flashdata”或仅可用于下一个服务器请求的会话数据,然后自动清除。 这些非常有用,通常用于信息或状态消息(例如:“记录2已删除”)。

注意:Flash变量的前缀为“flash_”,因此请在您自己的会话名称中避免使用此前缀。

要添加flashdata:

$this->session->set_flashdata('item', 'value');

您也可以使用与set_userdata()相同的方式将数组传递给set_flashdata() set_userdata()

要读取flashdata变量:

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

如果您发现需要通过其他请求保留flashdata变量,则可以使用keep_flashdata()函数执行此操作。

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

我想指出CodeIgniter在注销时会破坏当前会话。 这使得传递消息更加困难,因为您无法使用闪存或会话存储,因此沿着“您已登录/退出”的方式传递消息。 如果您需要在登录和退出状态之间转换时传递消息,我建议使用memcached 其他选项(如上所述) 使用URL查询字符串设置cookie

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM