PHP发布网址没有任何操作

时间:2011-11-08 18:39:53

标签: php codeigniter

在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方法无论如何?

3 个答案:

答案 0 :(得分:1)

表单帖子是页面刷新。当生成pdf时,页面“刷新”实际上是您下载pdf - 因此浏览器不会让您远离/items方法 - 它与您打开{{1}链接的方式相同,页面在新窗口中打开,当前页面不受影响。

你可以在这里做两件事之一:

  1. 如果target="_blank"方法中的错误重定向到documents
  2. ,请重定向
  3. 通过ajax提交表单,因此无论是否有错误,您都可以/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函数,如果验证是假的..