我有以下实体:
tasks
[
{
"designation": "Task 1",
"action": "Do action 1",
//...
},
{
"designation": "Task 2",
"action": "Do action 2",
//...
},
//...
]
作为数组存储在Json File中,如下所示:
...\Entity\Jobs:
properties:
tasks:
- Collection:
allowMissingFields: false
missingFieldsMessage: jobs.tasks.missingfields
fields:
designation:
- NotBlank:
message: jobs.tasks.fields.blank
##...
当用户从表单定义数据时,我想实现一个用于验证的断言。
我实现了这一步(我使用yml):
data.tasks[designation]
当我尝试验证表单时,我遇到了data.tasks[action]
和function readURL(event) {
let input = event.target;
if (input.files) {
Array.from(input.files).forEach((f, i) => {
var reader = new FileReader();
reader.onload = function(e) {
$('#img' + i).attr('src', e.target.result);
};
reader.readAsDataURL(f);
});
}
}
的验证错误。
验证应应用于第二级数组。
如何为这种阵列配置验证器?
答案 0 :(得分:1)
与数组键相关时,将使用@Collection()
断言,每个数组代表一个任务就是这种情况。如果您只关心其中的值,例如数字数组,则可以使用@All()
约束。
在您的情况下,您想同时合并任务列表(@All
)和该列表中的每个任务(@Collection
)。作为注释,它可能看起来像这样:
class Jobs
{
/**
* @Assert\All({
* @Collection(...)
* })
*/
private $tasks;
}
请参阅:https://symfony.com/doc/current/reference/constraints/All.html