is_unique 用于 codeigniter 表单验证

新手上路,请多包涵

我试图弄清楚如何在以下情况下使用 Codeigniter 表单验证库中的 is_unique 规则。

我正在尝试提交编辑用户表单并制定规则:

 $this->form_validation->set_rules('user_name', 'User Name', 'required|trim|xss_clean|is_unique[users.user_name]');

如果正在更改表单中的其他值但此值保持不变怎么办?该表单将看到该值已经存在,因此如果该值未更改,我将如何保护它不被编辑。

原文由 Kevin Smith 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
2 个回答

以您的代码为例, is_unique 验证规则通过在您的 users 数据库表中查找名为 user_name 的字段来工作。如果存在具有相同值的字段,则它验证为 false。

为了确保它仅在用户提交新值时运行,您可以检查发布的值 $this->input->post('user_name') 与您从数据库中提取的值以填充您的表单。如果相同,则不验证 is_unique;

 if($this->input->post('user_name') != $original_value) {
   $is_unique =  '|is_unique[users.user_name]'
} else {
   $is_unique =  ''
}

$this->form_validation->set_rules('user_name', 'User Name', 'required|trim|xss_clean'.$is_unique);

原文由 Jeemusu 发布,翻译遵循 CC BY-SA 3.0 许可协议

有一个更好的方法来绕过它,我认为,仍然使用 CodeIgniters 的验证库……使用 edit_unique 你传递一个额外的参数,它是你正在编辑的行的 id ..见下文..我使用它并且对我来说工作得很好..希望它有帮助

$this->form_validation->set_rules('user_name', 'User Name', 'required|trim|xss_clean|edit_unique[users.user_name.'.$id.']');

原文由 Anthony Mutisya 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏