私はSymfony Validationを使用して自分のモデル(基本的な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
}
}
}
}
}
私は、
0この経由して検証を実行しています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