1

我已按照本教程:http ://symfony.com/doc/current/cookbook/validation/custom_constraint.html创建自定义验证约束。我成功了,没问题。本教程解释了如何创建一个仅允许用户在字段中键入字母数字字符的约束。我想要做的是创建一个约束,强制用户键入以大写开头的字符串。

我想我必须更改这部分功能:

public function validate($value, Constraint $constraint)
{
    if (!preg_match('/^[a-zA-Za0-9]+$/', $value, $matches)) {
        $this->context->addViolation($constraint->message, array('%string%' => $value));
    }

但是我对php太陌生了,我不知道我想要的约束的语法。

4

3 回答 3

1

更好的解决方案是使用正则表达式验证约束:http ://symfony.com/doc/current/reference/constraints/Regex.html

带注释的示例:

class MyEntity
{
    /**
     * @Assert\Regex(
     *     pattern="/^[A-Z]/",
     *     match=false,
     *     message="Your name cannot contain a number"
     * )
     */
    protected $string;
}
于 2013-11-14T13:06:07.380 回答
0
if (!preg_match('/^[A-Z]/', $value, $matches)) {
    $this->context->addViolation( /* .. */ );
}

^= 以

[A-Z]= A ... Z 之一(大写字母)

于 2013-11-14T12:38:49.970 回答
0

关于 php.net 自己找到它:

if ($value[0]!=strtoupper($value[0])) {
...
}
于 2013-11-14T12:53:20.557 回答