如何使用codeigniter处理重定向?
即时通讯启动codeigniter项目时出现问题,问题是,当我在控制器中做了一些事情,然后我想要一个页面来显示结果,例如:我有一个表单添加一个项目到数据库,我得到了所有在控制器中的数据并将其保存到数据库,然后我想(如果一切顺利的话)重定向到一个成功味精的主要页面,我用如何使用codeigniter处理重定向?
$this->load->view('admin', $data);
问题这样做,这是该URL保持说管理员/ addItem所以每次页面刷新它增加了另一个项目,现在我发现:
redirect('admin','refresh');
,但这只能帮助我,当我不需要显示任何味精,因为这个功能不允许发送$数据变种。 任何想法? 也许这是很容易修复,但我无法找到一种方法来处理应用程序的流程我想要的方式,任何帮助是apreciated。 感谢;)
Flashdata是你的朋友,这个链接和大约一半的页面,你会发现flashdata的文档。
基本上,如果您的表单功能成功,您可以使用您的成功信息设置flashdata,$this->session->set_flashdata('success', 'You successfully did something, yay!');
现在重定向到您的管理页面。 redirect('admin','refresh');
在管理页面检查现有flashdata,并将它显示给用户
哦,这看起来像我需要,我要检查它; D – 2010-03-19 21:36:08
可以很容易修复,也可能是也难以解决, 看看有关URI的文档路由http://codeigniter.com/user_guide/general/routing.html
在我的测试程序,我用这个瓦尔
$route['default_controller'] = "main";
$route['scaffolding_trigger'] = "";
主要是一个控制器,所以如果你访问你的网站,它首先调用控制器主
在你的情况下,我会用这样的东西
$route['admin/:num'] = "catalog/products";
这将重定向到管理员的任何接入/ *到目录/产品
有创意;-)
我认为你应该使用这种形式给出:
而不是调用管理视图或重定向的头,你应该从帖子发送如果$ _POST变量不为空,意味着你应该将数据保存在调用其他函数的数据库中,或者在一个模型的示例中:($ this-> save_data_in_database(); )并将其结果再次发送到视图。 如果$ _POST变量为空,则应调用管理视图并将消息的数据作为NULL发送。
我送一个例子波纹管:
查看管理:(直接邮寄到控制器的管理功能)
<html>
(...)
<body>
<?php echo $message_response; ?>
<form method="post" action="<domain>/index.php/admin" />
<imput (...)
</form>
</html>
控制器:
function admin()
{
if (isset($_POST['fieldname']))
$data['message_response']=$this->save_data_in_database($params...);
else
$data['message_response']=NULL;
$this->load->view('admin', $data);
}
function save_data_in_database($params...)
{
(save data to database etc...)
return (...message_to_display...);
}
最好的问候,
Pedro
这看起来不错,现在即时尝试flashdata的东西,如果没有工作,就像我想要我会尝试这个,TY;) – 2010-03-19 23:56:42
3答案工作,我选择了一个来自dyllon只是因为我喜欢它:P感谢家伙,很好的答案; D – 2010-03-20 01:42:38