is_unique-function有多个忽略字段



我在Codeigniter 4验证规则方面遇到了一些问题。我在Order中使用规则集中的is_unique函数来从验证中排除一行。

这里的问题是,表中有两个字段需要检查:

'episodeTitle' => [
'label' => 'episodeTitle',
'rules' => 'required|max_length[100]|is_unique[episodes.episodeTitle,episodes.episodeID,' . $episodeID . ',episodes.podcastID,' . $podcastID . ']',
'errors' => [
'required' => lang('Errors.nested.episode.episodeTitleRequired'),
'max_length' => lang('Errors.nested.messages.maxLength100'),
'is_unique' => lang('Errors.nested.episode.episodeTitleUnique'),
],
],

是否可以根据2个或多个字段进行例外处理?

我想检查episodeID和podcastID,而不仅仅是其中一个值。

您需要创建一个自定义规则来实现您想要的目标。

规则存储在简单的、有名称空间的类中。它们可以存储在你想要的任何位置,只要自动加载器能找到。这些文件被称为规则集。要添加新的规则集,请编辑Config/Validation.php并将新文件添加到$ruleSets数组:

public $ruleSets = [
CodeIgniterValidationRules::class,
CodeIgniterValidationFileRules::class,
CodeIgniterValidationCreditCardRules::class,
];

在文件本身中,每个方法都是一个规则,必须接受字符串作为第一个参数,并且必须返回布尔值true或false,如果通过测试则表示true,如果未通过则表示false:

class MyRules
{
public function check_unique(string $str): bool
{
// Your code to check the values and don't forget to return true or false.
}
}

然后在验证中只需使用check_unique规则。

最新更新