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

我对Codeigniter相当新,我想知道一些Codeigniter最佳实践。我什么时候应该使用
redirect()
而不是使用
$this->load->view
似乎当我使用
redirect()
然后
$this->session->set_flashdata
就像它应该工作但我使用时
$this->load->view
在收到其他请求后会显示该消息。     
已邀请:
我想你真的回答了自己的问题。 当另一个页面顶部的简单flash消息是适当的响应时,使用redirect(),当你为传入的请求提供整个页面的反馈时,使用$ this-> load-> view()。 因此,例如,当新用户注册时,“成功”页面将是加载的视图,并且可能当用户在其帐户中编辑某些内容时,在同一页面上的闪存消息“已更改已保存”或类似内容就足够了。     
重定向对于另外两个常见问题也很有用: 移动应用程序中的资源时(并且您希望客户端记住新URI) 将表单发布后,作为防止后退按钮rePOSTs的一步     
你的观察是正确的,无论何时你创造一些
flashdata
,它只有时间可用。这是因为
flashdata
只是一种特殊类型的
session
,可以在下次请求时使用,在下一次请求后它会自动删除。您不必处理它的删除。 这可以用代码测试:
$this->session->set_flashdata( 'test', 'testing' );
echo $this->session->flashdata( 'test' );
什么都不会打印出来。但现在下次执行以下代码:
echo $this->session->flashdata( 'test' );
您将找到所需的输出。再做一次不会给出任何输出。这就是他们的工作方式。有关详细信息,请参阅http://codeigniter.com/user_guide/libraries/sessions.html中的Flashdata部分 对于当前页面,您不需要
flashdata
只将数据传递给视图。这是代码:
$data['test'] = 'testing';
$this->load->view('sample_view', $data);
底线是使用
flashdata
redirect()
,对于视图,你应该传递变量。希望这可以帮助!     
这很简单。你希望用户使用什么网址?如果它们在url1上并将数据发布回url1并且你只是加载一个不同的视图,它们仍将在url1上。如果你重定向到url2,他们将转到url2。     
您需要使用PRG - Post / Redirect / Get模式。 如果页面内容中包含表单,则重定向和加载视图不同。
Scenario:
有一个视图,view_1带有表单,可以从帐户中扣款。在view_1中提交表单后,您希望跳转到view_2并显示成功消息,并且您有两个选项可以实现相同的目标。 1.使用成功消息加载view_2或2.使用闪存数据携带成功消息重定向到view_2。 选项1:使用成功消息加载view_2 当您提交表单并刷新时,它将导致重新提交并导致多次从帐户扣款,但情况并非如此。您也可以看到警告弹出“确认表单重新提交”。 选项2:这是正确的答案 PRG PRG - 发布/重定向/获取 PRG是一种Web开发设计模式,可以防止一些重复的表单提交,这意味着,提交表单(view_1) - >重定向 - >获取(view_2)
Under the hood
重定向状态代码 - 带有HTTP 302的HTTP 1.0或带有HTTP 303的HTTP 1.1 具有重定向状态代码的HTTP响应还将在位置标题字段中提供URL。通过具有该代码的响应来邀请用户代理(例如,web浏览器),以对位置字段中指定的新URL做出第二个(否则相同的)请求。 重定向状态代码是为了确保在这种情况下,Web用户的浏览器可以安全地刷新服务器响应,而不会导致重新提交初始HTTP POST请求。 资源
Double Submit Problem
Post/Redirect/Get Solution
    

要回复问题请先登录注册