【发布时间】:2015-07-11 03:21:12
【问题描述】:
你如何验证一个字段在 cakephp 3.0 中是唯一的? API 中似乎没有列出验证函数。
【问题讨论】:
标签: validation cakephp cakephp-3.0
你如何验证一个字段在 cakephp 3.0 中是唯一的? API 中似乎没有列出验证函数。
【问题讨论】:
标签: validation cakephp cakephp-3.0
您想使用规则validateUnique。例如,检查UsersTable 上的电子邮件地址是否唯一:-
public function validationDefault(Validator $validator)
{
$validator->add(
'email',
['unique' => [
'rule' => 'validateUnique',
'provider' => 'table',
'message' => 'Not unique']
]
);
return $validator;
}
详情请见the API docs。
【讨论】:
你必须在你的桌子上使用 cake 的 ORM 中的规则...
在命名空间之后的用户表顶部添加它
use Cake\ORM\Rule\IsUnique;
然后通过将规则放在公共函数中来准备您的规则以应用于您的领域
public function buildRules(RulesChecker $rules){
$rules->add($rules->isUnique(['email']));
return $rules;
}
有关RULES的更多信息,请参阅 cakephp 文档
【讨论】:
Provided value is invalid 用于唯一字段?
public function isUnique(array $fields, $message = null){ 所以你的代码会像:$rules->add($rules->isUnique(['email'],'Your message here!'));
验证提供者可以是对象或类名。如果使用类名,则方法必须是静态的。要使用“默认”以外的提供程序,请务必在规则中设置 provider 键:
// Use a rule from the table provider
$validator->add('title', 'unique', [
'rule' => 'uniqueTitle',
'provider' => 'table'
]);
有关更多详细信息,请查看 CakePHP3 参考书中的Adding Validation Providers 部分。
【讨论】:
使用manual 中描述的应用程序规则。
【讨论】:
$rules->add($rules->isUnique(['UNIQUE_COLUMN']));
请检查此在 cakephp 3.8 中的唯一验证 go to site
public function validationDefault(Validator $validator)
{
$validator->requirePresence('login_id');
return $validator;
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['login_id'], 'User already exist.'));
return $rules;
}
【讨论】: