Symfony2 Validator消息:哪些变量可用?

时间:2014-12-30 10:07:46

标签: symfony variables validation placeholder

此时我正在使用我的Entity类中的Annotations使用Symfony Validator组件实现验证。

Symfony文档显示您可以使用某些占位符通过消息传递变量,这些消息可以由转换器组件翻译。

例如,可以编写以下注释:

/**
 * Assert\Length(
 * min = 5,
 * max = 10,
 * minMessage = "Title too short: {{ limit }}",
 * maxMessage = "Title too long: {{ limit }}"
 */
 protected $title;

这很好用,但我想知道你有哪些占位符? 是否可以创建自定义占位符?

我知道{{ value }}占位符存在(并且有效),但它不在Symfony的文档页面上,关于如何使用长度验证。

我想使用像{{ key }}{{ name }}这样的占位符标记来传递字段的技术名称(在本例中为" title"),所以我可以写我的minMessageminMessage = "{{ field }} too short: {{ limit }}"

我尝试检查Symfony的标准组件,看看这些占位符是如何处理的,但我找不到适合我的变量列表。

请帮帮我! T_T

1 个答案:

答案 0 :(得分:7)

如果您查看您发布的LengthValidator的代码作为示例,您可以看到这些“变量”只是在其自己的Validator类中替换的静态字符串。

因此,所有都是自定义的,这也可能是没有可用列表的原因。

班级:

https://github.com/symfony/Validator/blob/master/Constraints/LengthValidator.php

相关摘要:

if (null !== $constraint->max && $length > $constraint->max) {
            $this->buildViolation($constraint->min == $constraint->max ? $constraint->exactMessage : $constraint->maxMessage)
                ->setParameter('{{ value }}', $this->formatValue($stringValue))
                ->setParameter('{{ limit }}', $constraint->max)
                ->setInvalidValue($value)
                ->setPlural((int) $constraint->max)
                ->setCode(Length::TOO_LONG_ERROR)
                ->addViolation();
            return;
        }