我有一个关于在codeigniter中启用表单验证的is_unique()规则的问题。
在另一种解释(link)中,它们不包括用于is_unique()标准用法的模型查询生成器。
我需要对我的is_unique(table.field)字段使用规则id
要使此函数在模型文件上工作以从数据库启动table.field,我应该做什么?因为在documentation时,我没有看到启用is_unique规则的解释。
我当前的代码仍在手动使用匹配数据,但我需要知道如何使用此规则
$this->表单验证->设置规则('site id','siteid','trim必需的最大长度[100]是唯一的[站点塔。站点id tlp]);

最佳答案

我刚刚浏览了你发布的链接,有两种方法可以使用这种验证。如果已在配置文件中设置。
有了它,你就可以按原样使用代码了,它将自动工作。但有时这种逻辑可能不一定满足你的需要,你需要更复杂的东西。
例如,假设您有一个成员注册,要求您检查电子邮件是否已存在,您可以运行is_unique,它将完美工作。现在假设您要编辑同一个成员,在编辑函数上运行is_unique将使用户无法保存数据(如果没有编辑数据)。为什么?因为is_unique将确定电子邮件已注册,尽管它属于正在编辑的当前用户。
我们怎么解决这个问题?我们运行自己的回调函数来指定逻辑。
可以通过在控制器中指定一个方法(或模型——略有不同)来实现,但要在方法名前面加上callback_u,以便检测到它。

$this->form_validation->set_rules('username', 'Username', 'callback_username_check');

然后在控制器中查找名为“username_check”的方法
public function username_check($str)
{
        if ($str == 'test')
        {
                $this->form_validation->set_message('username_check', 'The {field} field can not be the word "test"');
                return FALSE;
        }
        else
        {
                return TRUE;
        }
}

当然,您可以使用回调函数中的查询来检查数据库,而不是只检查示例中显示的字符串。
更多信息见CI3文件。
LINK
使用ctrl+f并搜索回调或是唯一的

关于php - 如何在CodeIgniter中为is_unique表单验证启用查询生成器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34308083/

10-12 13:02