CakePHP 3 – 使用可重用的验证器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了CakePHP 3 – 使用可重用的验证器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2391字,纯文字阅读大概需要4分钟。
内容图文
在CakePHP 3文档中,有一节关于可重用验证器:https://book.cakephp.org/3.0/en/core-libraries/validation.html#creating-reusable-validators
虽然它没有说明你如何使用它们.谁能举个例子?
我有一个特殊的应用程序,允许上传.csv文件.应用程序中.csv文件的验证始终相同:检查它的MIME类型,检查大小,检查扩展名等.
所以我的计划是将其作为可重用的验证器来实现 – 这是正确的吗?
我有一个带有upload()函数的UploadsController.php,我想用它来验证来自表单的数据.我很困惑,因为我现在还没有创建一个实体 – 而只是试图验证我的文件 – 所以文档中的所有这些patchEntity()内容在这里都没有意义.
我发现Cake 3的验证文档非常令人困惑,因为ORM(https://book.cakephp.org/3.0/en/orm/validation.html)下有一个部分,
Validation rules are defined in the Table classes
但是后来,它在验证实体方面有一个完全不同的部分(https://book.cakephp.org/3.0/en/core-libraries/validation.html#validating-entities).
然后我们有Reusable Validators …..和其他各种东西.
由于Cake 3中的Table和Entity模型类不同,有人可以解释如何验证文件上传之类的内容,特别是考虑到甚至可能根本没有表格吗?
如果您在表单上有一个组合,您需要同时使用可重用验证器(用于验证.csv等常见任务),以及可能在Table模型类中的特定表的单独规则集,该怎么办? ?
解决方法:
表提供合同
实际上并没有那么复杂.为方便起见,在表上定义了涉及表的验证规则.它们不必在那里定义,它们可以在自定义验证类中定义,但最后表对象提供了所请求的验证规则集.
验证实体是公共验证流程的一部分.由于实体是传递给表的数据集,因此表应该包含决定实体是否有效的规则,因为这是关注的表.
也可以看看
> Cookbook > Database Access & ORM > Saving Data > Converting Request Data into Entities
继承验证规则
组合验证器非常简单,只需将您的自定义验证对象传递给表类中的验证*()方法,该类提供您要继承的规则,类似于以下内容:
public function validationDefault(Validator $validator)
{
$validator
->add(/* ... */);
return $validator;
}
public function validationCustomAndDefault()
{
$validator = new \App\Model\Validation\CustomModelValidator();
return $this->validationDefault($validator);
}
然后只需将validate选项配置为customAndDefault,并使用自定义验证对象规则和默认值验证您的数据/实体.
也可以看看
> Cookbook > Database Access & ORM > Validation > Combining Validators
验证与模型层无关
除此之外,验证不依赖于模式层,它只是利用它,您可以随时使用验证对象,即如果您想手动验证数据,只需实例化验证器类并使用它来验证您的数据:
$validator = new \App\Validation\CustomGenericValidator();
$errors = $validator->errors($data);
也可以看看
> Cookbook > Database Access & ORM > Validation > Validating Data
内容总结
以上是互联网集市为您收集整理的CakePHP 3 – 使用可重用的验证器全部内容,希望文章能够帮你解决CakePHP 3 – 使用可重用的验证器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。