验证

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

验证

验证在web应用程序中是很常见的任务。数据输入表单需要验证。数据还需要验证之前写入数据库或传递给web服务。

欧宝娱乐app下载地址Symfony提供了一个验证器组件,使这项任务变得容易和透明。该组件是基于JSR303 Bean验证规范

安装

在应用程序中使用欧宝娱乐app下载地址Symfony Flex运行这个命令,安装在使用前验证器:

1
美元作曲家要求symfony / va欧宝娱乐app下载地址lidator教义/注释

基本的验证

最好的方式来理解验证是看它的实际应用。首先,假设您已经创建了一个plain-old-PHP对象,您需要使用在您的应用程序:

1 2 3 4 5 6 7
/ / src /实体/ Author.php名称空间应用程序\实体;作者{公共美元的名字;}

到目前为止,这仅仅是一个普通的类,在您的应用程序提供一些目的。验证的目的是告诉你如果一个对象的数据是有效的。为此,您将配置一个规则(称为列表约束)对象必须遵循的是有效的。这些规则通常使用PHP代码定义或注释,但它们也可以被定义为一个validation.yamlvalidation.xml文件里面的配置/验证器/目录:

例如,为了保证美元的名字财产不是空的,添加以下:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12
/ / src /实体/ Author.php/ /……使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;作者{/ * * *@Assert\ NotBlank * /公共美元的名字;}

提示

保护和私人属性也可以验证,以及“getter”方法(见验证)。

使用验证器服务

接下来,验证一个作者对象,使用validate ()方法验证器服务(类验证器)。的工作验证器阅读类的约束(即规则)和验证数据对象满足这些约束。如果验证失败,一个非空列表(类的错误ConstraintViolationList返回)。这个简单的例子从一个控制器:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27
/ /……使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;使用欧宝娱乐app下载地址\组件\验证器\验证器\ValidatorInterface;使用应用程序\实体\作者;/ /……公共函数作者(ValidatorInterface美元验证器){美元作者=作者();/ /……做一些美元作者对象美元错误=美元验证器- >validate (美元作者);如果(数(美元错误)>0){/ * *使用__toString方法$错误变量* ConstraintViolationList对象。这给了我们一个很好的字符串*进行调试。* /美元errorsString=(字符串)