我正在使用Symfony驗證來完成對我的模型(基本PHP類)的驗證。當我嘗試執行驗證,有人告訴我,我的YAML文件必須包含一個YAML陣列,爲什麼我爲Symfony驗證yaml文件獲取「必須包含YAML數組」?
InvalidArgumentException: The file "/Users/me/git/project123/app/Lib//Acme/SiteList/Model/validations.yml" must contain a YAML array.
我的Symfony驗證YAML看起來像這樣(使用4個空格縮進),
Acme\SiteList\Model\SiteListItem:
properties:
siteListId:
- NotBlank: ~
Acme\SiteList\Model\SiteList:
properties:
name:
- NotBlank: ~
解析YAML驗證文件看起來像這樣,
array(2) {
["Acme\SiteList\Model\SiteListItem"]=>
array(1) {
["properties"]=>
array(1) {
["siteListId"]=>
array(1) {
[0]=>
array(1) {
["NotBlank"]=>
NULL
}
}
}
}
["Acme\SiteList\Model\SiteList"]=>
array(1) {
["properties"]=>
array(1) {
["name"]=>
array(1) {
[0]=>
array(1) {
["NotBlank"]=>
NULL
}
}
}
}
}
我通過這個執行驗證,
public function validate(SiteListItem $model)
{
$validationsPath = APPLIBS . DS . 'Acme/SiteList/Model/validations.yml';
$parsed = Yaml::parse(file_get_contents($validationsPath));
var_dump($parsed);
$validator = Validation::createValidatorBuilder()
->addYamlMapping($validationsPath)
->getValidator();
/** @var ConstraintViolationList $violations */
$violations = $validator->validate($model);
return $violations;
}
我想你還有別的事情在這裏。我複製/粘貼您的validations.yml文件,一切似乎都正常工作。我懷疑你的驗證文件中可能有額外的未發佈的行?錯誤消息來自YamlFileLoader :: parseFile()我想你可以通過在那裏粘貼調試語句開始。 – Cerad