1

我在 codeigniter 中使用表单验证类。一切正常,但是当它重新加载带有错误的表单时,页面再次位于顶部。(因为它已刷新)。有没有办法可以#id在 url 的末尾添加一个,这样它就会在表单所在的页面更下方加载?

我尝试redirect('form/form#form, 'refresh')了哪个有效,但没有解决错误。

4

2 回答 2

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 标记。

于 2012-09-28T00:24:22.070 回答
0

问题是如果您重定向页面,那么 POST 数组就会被清除。因此 set_value() 无法重新填充您的表单。

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

  1. 覆盖会话库。在这个库中,将您的帖子数组粘贴到重定向时的会话 flash_data 中。然后在您的 set_value 函数(其中有 2 个)中,如果您在 post 数组中找不到任何内容,请查找您的 flashdata。
  2. 不要使用 set_value 函数。相反,在你的动作控制器中将你的表单数据放入 flashdata,在你的表单中,使用 $this->session->flashdata('form_field_1'),而不是 set_value('form_field_1');

就重定向而言,您做对了。

很抱歉懒惰并没有发布代码。如果这还不够清楚,请告诉我,我可以发布代码。

于 2012-09-27T23:23:56.253 回答