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 に答える