Php 为什么我会得到一个“a”;必须包含YAML数组“;对于Symfony验证yaml文件?
我使用Symfony验证来完成对我的模型(基本PHP类)的验证。当我尝试执行验证时,我被告知我的YAML文件必须包含一个YAML数组Php 为什么我会得到一个“a”;必须包含YAML数组“;对于Symfony验证yaml文件?,php,symfony,validation,yaml,symfony-validator,Php,Symfony,Validation,Yaml,Symfony Validator,我使用Symfony验证来完成对我的模型(基本PHP类)的验证。当我尝试执行验证时,我被告知我的YAML文件必须包含一个YAML数组 InvalidArgumentException:file“/Users/me/git/project123/app/Lib//Acme/SiteList/Model/validations.yml”必须包含YAML数组。 我的Symfony验证YAML如下所示(使用4个空格进行缩进) 解析YAML验证文件如下所示 array(2) { ["Acme\Sit
InvalidArgumentException:file“/Users/me/git/project123/app/Lib//Acme/SiteList/Model/validations.yml”必须包含YAML数组。
我的Symfony验证YAML如下所示(使用4个空格进行缩进)
解析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;
}
没有YAML数组这样的东西。YAML有序列(节点列表)和映射(键值对集)。Symfony的作者认为在这个错误消息中使用术语数组是个坏主意,因为PHP中的
数组在大多数其他语言中被称为哈希表
话虽如此,问题仍然存在于你的道路上:
/Users/me/git/project123/app/Lib//Acme/SiteList/Model/validations.yml
^^
此双斜杠可能会阻止Symfony加载文件。产生的错误肯定不是我对这种输入的预期。没有YAML数组这样的东西。YAML有序列(节点列表)和映射(键值对集)。Symfony的作者认为在这个错误消息中使用术语数组是个坏主意,因为PHP中的数组在大多数其他语言中被称为哈希表
话虽如此,问题仍然存在于你的道路上:
/Users/me/git/project123/app/Lib//Acme/SiteList/Model/validations.yml
^^
此双斜杠可能会阻止Symfony加载文件。产生的错误肯定不是我所期望的这种输入。有点旧,但万一您省略了routes.yml文件的第一行(或保留注释)
#index:
path: /
controller: App\Controller\HomeController::index
不起作用,给你这个错误
index:
path: /
controller: App\Controller\HomeController::index
这是正确的。
希望这会有所帮助。有点旧,但万一您省略了routes.yml文件的第一行(或保留注释)
#index:
path: /
controller: App\Controller\HomeController::index
不起作用,给你这个错误
index:
path: /
controller: App\Controller\HomeController::index
这是正确的。
希望这会有所帮助。如果加载程序找不到文件,您将看到“文件不存在”。双斜杠不是问题。如果加载程序找不到文件,则会出现“文件不存在”。双斜杠不是问题。我想你还有别的事。我复制/粘贴了你的validations.yml文件,一切都正常。我怀疑您的验证文件中可能还有其他未列出的行?错误消息来自YamlFileLoader::parseFile(),我想您可以从在那里粘贴调试语句开始。我认为问题出在YamlLoader中。这里使用的是哪一个?我最近遇到了一个问题,我在路由下使用了一个,而不是在翻译组件下使用了一个。希望能有帮助。我想你还有别的事情要做。我复制/粘贴了你的validations.yml文件,一切都正常。我怀疑您的验证文件中可能还有其他未列出的行?错误消息来自YamlFileLoader::parseFile(),我想您可以从在那里粘贴调试语句开始。我认为问题出在YamlLoader中。这里使用的是哪一个?我最近遇到了一个问题,我在路由下使用了一个,而不是在翻译组件下使用了一个。希望能有帮助。