Codeigniter:将#id添加到URL上的加载视图文件向下滚动页面

时间:2012-09-27 09:57:37

标签: php validation codeigniter view

我在codeigniter中使用表单验证类。一切正常,但当它重新加载带有错误的表单时,页面再次位于顶部。 (因为它刷新了)。有没有办法可以在网址的末尾添加#id,以便在表单所在的页面下方进一步加载?

我尝试redirect('form/form#form, 'refresh')虽然有效,但没有完成错误。

2 个答案:

答案 0 :(得分:0)

问题是如果您重定向页面,则清除POST阵列。因此,set_value()无法重新填充表单。

有几种方法可以解决这个问题

  1. 覆盖会话库。在这个库中,将你的post数组粘贴到重定向的会话flash_data中。然后在你的set_value函数里面(其中有两个),如果你在post数组中找不到任何东西,那就找你的flashdata。
  2. 不要使用set_value函数。相反,在您的操作控制器内部将表单数据放入flashdata,并在表单内部使用$ this-> session-> flashdata('form_field_1'),而不是set_value('form_field_1');
  3. 就重定向而言,你做得对。

    抱歉懒惰而不发布代码。如果这个不够清楚,请告诉我,我可以发布代码。

答案 1 :(得分:0)

您只是在进行简单的表单验证吗?如果是这样,您应该能够在发生错误后使用set_value重新填充表单。

http://codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

如果您正在使用CI的表单验证,我假设您的表单返回到控制器。然后控制器应该确定去哪里。

  if ($this->form_validation->run() == FALSE) {
      $this->load->view('form#anchor');
  } else {
      $this->load->view('formsuccess');
  }

您应该能够根据验证过程中出现的错误在控制器中动态设置#anchor标记。