【发布时间】:2017-05-10 14:32:17
【问题描述】:
在 CakePHP 3 文档中有一个关于可重用验证器的部分:https://book.cakephp.org/3.0/en/core-libraries/validation.html#creating-reusable-validators
它并没有说明你如何使用它们,但在控制器中。谁能举个例子?
我有一个允许上传 .csv 文件的特定应用程序。应用程序中 .csv 文件的验证始终相同:检查其 MIME 类型、检查大小、检查扩展名等。
所以我的计划是将其实现为可重用的验证器 - 对吗?
我有一个 UploadsController.php 和一个 upload() 函数,我想用它来验证来自表单的数据。我很困惑,因为此时我没有创建实体 - 而只是试图验证我的文件 - 所以文档中的所有这些 patchEntity() 内容在这里毫无意义。
我发现关于 Cake 3 验证的文档非常混乱,因为在 ORM (https://book.cakephp.org/3.0/en/orm/validation.html) 下有一个部分,上面写着
验证规则在Table类中定义
但后来,它有一个完全不同的部分来验证实体 (https://book.cakephp.org/3.0/en/core-libraries/validation.html#validating-entities)。
然后我们有可重用的验证器......以及其他各种东西。
由于 Cake 3 中的表和实体模型类不同,有人可以解释一下您将如何验证文件上传之类的东西,特别是考虑到甚至可能根本没有表涉及?
如果您在表单上有一个组合,您需要使用 both 一个可重用的验证器(用于验证 .csv 等常见任务),以及一个单独的规则集可能在 Table 模型类中的特定表?
【问题讨论】:
-
你为什么不创建一个 UploadComponent 来做所有的上传工作,包括验证?
-
@RayannNayran 我想了解如何使用提供的可重用验证器,但看不到如何在我的控制器中引用它。目前我的表单提交给
UploadsController:upload()。如果我要创建src/Model/Validation/CsvValidator.php,那么我如何通过UploadsController:upload()将表单数据传递给它并取回验证消息?
标签: php validation cakephp