is_unique用于codeigniter表单验证

Kev*_*ith 20 php codeigniter

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

我正在尝试提交编辑用户表单并具有以下规则:

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

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

Jee*_*usu 34

使用您的代码为例,该is_unique验证规则的工作原理是寻找一个叫做场user_name在你的users数据库表.如果存在具有相同值的字段,则验证为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);
Run Code Online (Sandbox Code Playgroud)


小智 7

我认为还有更好的解决方法,仍然使用CodeIgniters的验证库...使用edit_unique,您传递一个额外的参数,即您正在编辑的行的ID ..请参阅下文..我使用它和对我来说工作得很好..希望它有所帮助

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

  • 功能edit_unique()[this answer](http://stackoverflow.com/a/15930074/1356425)中提供. (5认同)