Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我会得到一个“a”;必须包含YAML数组“;对于Symfony验证yaml文件?_Php_Symfony_Validation_Yaml_Symfony Validator - Fatal编程技术网

Php 为什么我会得到一个“a”;必须包含YAML数组“;对于Symfony验证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

我使用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\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中。这里使用的是哪一个?我最近遇到了一个问题,我在路由下使用了一个,而不是在翻译组件下使用了一个。希望能有帮助。