gpt4 book ai didi

php - 如何在 CodeIgniter 中为 is_unique 表单验证启用查询生成器?

转载 作者:搜寻专家 更新时间:2023-10-31 21:55:34 27 4
gpt4 key购买 nike

我有一个关于在 CodeIgniter 中为表单验证启用 is_unique() 规则的问题。

在另一种解释(link)中,它们不包括用于标准用法的模型查询构建器 is_unique()

我需要为我的 id 字段使用规则 is_unique(table.field)

我应该怎么做才能使这个函数在我的模型文件上运行以从我的数据库启动 table.field?因为在 documentation ,我没有看到关于启用 is_unique 规则的解释。

我目前的代码仍然是手动使用匹配数据,但我需要知道如何使用这个规则

$this->form_validation->set_rules('siteid', 'Site ID', 'trim|required|max_length[100]|is_unique[site_tower.site_id_tlp]');

最佳答案

我刚刚查看了您发布的链接,有两种方法可以使用此类验证。如果您在配置文件中进行了设置。

有了它,您可以按原样使用代码 is_unique[TABLE_NAME.FIELD],它会自动工作。但有时这种逻辑不一定能满足您的需求,您需要更复杂的东西。

例如,假设您有一个成员(member)注册,要求您检查电子邮件是否已经存在,您可以运行 is_unique,它会完美运行。现在假设您要编辑同一个成员,如果没有编辑数据,在编辑函数上运行 is_unique 将使用户无法保存数据。为什么?因为 is_unique 会确定电子邮件已经注册,尽管它属于正在编辑的当前用户。

我们如何解决这个问题?我们运行自己的回调,在其中指定逻辑。

您可以通过在 Controller (或模型——略有不同)中指定一个方法来完成此操作,但您可以在方法名称前加上 callback_ 前缀,以便检测到它。

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

然后这将在您的 Controller 中查找名为“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 并搜索回调或 is_unique

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

27 4 0
文章推荐: php - 通过 SMTP 和 PHPMailer 发送外发邮件时出现超时错误
文章推荐: javascript - document.getElementById ('myControl' ).focus() 在 PhoneGap 中不起作用
文章推荐: javascript - 使用 Javascript 重新定位
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com