Codeigniter何时使用redirect()以及何时使用$ this-> load-> view

T-W*_*cks 8 php codeigniter http-redirect

我对Codeigniter相当新,我想知道一些Codeigniter最佳实践.什么时候应该使用redirect()而不是使用

$this->load->view
Run Code Online (Sandbox Code Playgroud)

看来,当我使用redirect(),然后$this->session->set_flashdata就像它应该,但是当我使用

$this->load->view
Run Code Online (Sandbox Code Playgroud)

在收到其他请求后会显示该消息.

fre*_*red 7

我想你真的回答了自己的问题.

当另一个页面顶部的简单flash消息是适当的响应时,使用redirect(),当你为传入的请求提供整个页面的反馈时,使用$ this-> load-> view().

因此,例如,当新用户注册时,"成功"页面将是加载的视图,并且可能当用户在其帐户中编辑某些内容时,在同一页面上的闪存消息"已更改已保存"或类似内容就足够了.


Bru*_*son 6

重定向对于另外两个常见问题也很有用:

  • 移动应用程序中的资源时(并且您希望客户端记住新URI)
  • 将表单发布后,作为防止后退按钮rePOSTs的一步


M. *_*far 5

您的观察是正确的,每当您创建一些内容时flashdata,它仅在时间可用。这是因为它flashdata只是一种特殊类型session,您可以在下一个请求时使用它,并且在下一个请求之后它将自动删除。您不必关心它的删除。

可以使用以下代码进行测试:

$this->session->set_flashdata( 'test', 'testing' );
echo $this->session->flashdata( 'test' );
Run Code Online (Sandbox Code Playgroud)

不会打印任何内容。但现在下次执行以下代码:

echo $this->session->flashdata( 'test' );
Run Code Online (Sandbox Code Playgroud)

您将找到所需的输出。再执行一次将不会产生任何输出。这就是他们的工作方式。有关详细信息,请查看http://codeigniter.com/user_guide/libraries/sessions.html中的Flashdata部分

对于当前页面,您不需要flashdata将数据传递到视图。这是代码:

$data['test'] = 'testing';
$this->load->view('sample_view', $data);
Run Code Online (Sandbox Code Playgroud)

flashdata最重要的是,与视图一起使用redirect()和用于视图时,您应该传递变量。希望这可以帮助!