在CodeIgniter框架中,我有一个表单操作,它将一些复选框的id发布到控制器。控制器检查每个id以确保它有效,然后打印出pdf文档。这很好。
所以,我当前的方法是/ items,我发布到/ documents方法
function documents()
if ($this->input->post() && validate_documents())
{
$this->load->library('Print_docs');
$this->print_docs->execute($this->input->post());
}
}
因此,如果文档被打印出来,那么这很好用:用户保留在/ items方法上,pdf在浏览器中作为下载提供。
但是,如果validate_documents()为false,那么我不希望发生任何事情 - 即用户应该保留在/ items方法上。然而,实际发生的是用户以某种方式被重定向到/ documents方法 - 并且浏览器是空白的。
那么,为什么用户被重定向到/ documents方法?如何让用户保持/ items方法无论如何?
答案 0 :(得分:1)
表单帖子是页面刷新。当生成pdf时,页面“刷新”实际上是您下载pdf - 因此浏览器不会让您远离/items
方法 - 它与您打开{{1}链接的方式相同,页面在新窗口中打开,当前页面不受影响。
你可以在这里做两件事之一:
target="_blank"
方法中的错误重定向到documents
/items
答案 1 :(得分:0)
它被重定向,因为你告诉它去那里(<)。
当验证没问题时,你没有去文档方法的唯一原因是因为pdf打印。您可以做的是将文档中的代码移动到“items”方法,并将表单的操作设置为“items”。这样,当验证失败时,用户会“重定向”回到表单,在那里您应该提供有关错误的反馈(即错误消息)。
form_validation库页面提供了我解释的一些示例:http://codeigniter.com/user_guide/libraries/form_validation.html
答案 2 :(得分:0)
So, why is the user being redirected to the /documents method?
是错误的,因为当你检查验证时,它已经在文档方法中了。所以你应该基本上重定向到items函数,如果验证是假的..