Symfony json架构验证:没有html标签

时间:2017-09-26 16:53:50

标签: php json symfony jsonschema json-schema-validator

如何在Symfony项目中使用Json Schema为所有输入创建基本要求。例如,我有多个模式,但"type": "string"的所有属性都不应接受HTML标记作为输入?可能应该有一些正则表达式规则。但是,我需要找到方法,使其成为验证方法中所有输入的基本验证规则,而不更改每个模式文件

public function check($jsonData, $schemaFilePath){
    $path = $this->fileLocator->locate($schemaFilePath);

    $schema = (object)['$ref' => 'file://' . $path];

    $this->validator->validate($jsonData, $schema);

    if($this->validator->isValid()){
        return null;
    }else{
        return $this->validator->getErrors();
    }
}

希望我的问题很明确。如果我可以添加更多详细信息,请告诉我

2 个答案:

答案 0 :(得分:0)

这里有两个问题:

  • json架构中没有办法定义这样的"基本要求"
  • 无法使用正则表达式验证html。即使你的最大努力只会产生部分工作结果,所以你的正则表达式会提供假阴性和误报

我认为将此验证移至应用程序级别并使用适当的HTML解析器而不是正则表达式会更好。

答案 1 :(得分:0)

我建议使用JSON架构Bundle(第三方),它可能带有验证器,如:

https://github.com/justinrainbow/json-schema

https://github.com/HadesArchitect/JsonSchemaBundle