我正在使用CMS后端,我使用Codeigniter来帮助开发。
所以,我正在处理用户表。例如,我允许后端管理员插入,更新用户信息。
首先是一个用户表,每行都有一个"编辑"按钮。点击"编辑"按钮,有一个特定用户的表单。
e.g。
UserName: Mr. ABC
Email: abc@a.com
Password: 1234
由于我需要确保用户名是唯一的,并且电子邮件是唯一的,我需要使用isUnique验证
然而,问题是,如何处理案例,"只有用户修改数据,然后添加唯一规则" ?因为如果我没有更改用户名,那么我将通过原始名称进行检查,并且无法通过唯一检查,谢谢
$this->form_validation->set_rules('name', 'Username', 'trim|required|min_length[4]|is_unique[admin.username]');
答案 0 :(得分:2)
您无论如何都要将userID发送到服务器以进行更新,您可以运行查询来检查该用户名/用户ID组合是否存在。如果是这样,那意味着该用户没有改变。如果没有,则需要进一步检查is_unique。
如果您坚持使用form_validation,那么最好在回调中实现。
基本上在你的控制器中你将有两个功能
function form_grabber()
{
//get your form and stuff. run this line :
$this->form_validation->set_rules('name', 'Username', 'call_back_isUserNameNotChanged[userID]');
//assuming userID comes from the form aswell.
}
function isUserNameNotChanged($username,$userID)
{
//query DB, return true if match exists or false if it doesn't
}
答案 1 :(得分:1)
我没有多少使用codeigniter
,所以我不确定具体的代码,但是这样的事情怎么样:
$current_name = // current name in db
if ($this->input->post('name') != $current_name) {
// Name has been changed. Do validation.
}
...
基本上,只需检查发布的名称是否与数据库中已有的名称不同。如果是,请运行验证并进行更新。如果它是相同的,那就忽略它。