> Symfony中文手册 > 如何验证标量值和数组

如何验证标量值和数组

通常你会验证整个对象。但有时,你只是想验证一个简单的数值 – 想验证一个字符串是一个有效的电子邮件地址。这其实是很容易做到的。从控制器里面,它看起来像这样:

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
28
29
30
31
32
// ...
use Symfony\Component\Validator\Constraints as Assert;
 
// ...
public function addEmailAction($email)
{
    $emailConstraint = new Assert\Email();
    // all constraint "options" can be set this way
    // 所有约束“选项”,都可以这样设置
    $emailConstraint->message = 'Invalid email address';
 
    // use the validator to validate the value
    // 使用validator去验证值
    $errorList = $this->get('validator')->validate(
        $email,
        $emailConstraint
    );
 
    if (0 === count($errorList)) {
        // ... this IS a valid email address, do something
        // ... 这是一个有效的email地址,做些什么吧
    } else {
        // this is *not* a valid email address
        // 他不是一个有效的email地址
        $errorMessage = $errorList[0]->getMessage();
 
        // ... do something with the error
        // ... 出现错误要做的事情
    }
 
    // ...
}

通过调用validator(验证器)的validate方法,你可以传入一个原始值和一个你要使用的校验对象。可用约束完整列表-以及每个约束的完整类名-查看 constraints reference章。

validate方法会返回一个ConstraintViolationList对象,它扮演的只是一个错误信息数组的角色。集合中的每一个错误是一个ConstraintViolation对象,使用对象的getMessage方法可以获取错误信息。