0

我使它工作的方式是创建一个专用控制器来处理我在多个页面上重复的表单,即somedomain.com/form/callmeback/到目前为止一切都很好。但是,一旦验证器完成它的工作,我需要返回到提交表单的页面,显示要显示的错误列表或发送消息,然后返回原始表单页面并显示成功消息。

实现这一目标的“最佳”方式是什么?

到目前为止,我的想法一直停留在使用$_SERVER['HTTP_REFERER']或以 acurrent_url()作为其值的隐藏字段上,然后就这样做,header('Location:'.$_POST['ref'])但这不允许我发回验证错误。

[编辑]

最后,我使用 codeIgniter 会话闪存数据功能解决了我的问题

//redirect back to source
    if($_SERVER['HTTP_REFERER'] && strpos($_SERVER['HTTP_REFERER'], base_url()) !== false) {
        //do form handling stuff here
        $this->session->set_flashdata('callmeback_errors', validation_errors());
        header('Location:' . $_SERVER['HTTP_REFERER']);
    } else {
        //invalid referer, do nothing say nothing, pretend the page doesn't exist
        show_404();
    }

谢谢你的想法:)

4

2 回答 2

1

Flash 会话是个好主意,但我不确定它是否能正常工作validation_errors()

但我有一个不同的想法,而不是专用控制器和专用助手来执行相同的功能,包括这样您就不必更改控制器并将 POST 数组发送到助手功能,希望这会有所帮助

于 2012-12-18T22:48:22.323 回答
0

将您的错误序列化到会话中,然后在下一个请求(如“flash”消息)中将其删除。我以前用 Symfony 做过类似的事情。

于 2013-01-17T18:37:34.263 回答