Symfony float类型错误消息


symfony float type error message

我对交响乐有点陌生。我有一个问题与实体和他的注释和链接的具体错误信息。下面,您可以看到实体属性和特定的注释。

/**
 * @var float
 *
 * @ORM'Column(name="chest", type="float")
 *
 * @Assert'Type(type="float", message="The value {{ value }} is not a type {{ type }} valid.")
 *
 */
private $chest;

如果我将这个字段作为文本字段添加到表单中,就会得到实体中指定的正确错误消息。(例如:值"222"不是有效的浮点类型)

$builder->add('chest', 'text')

但是如果我将这个字段添加为数字字段,我将得到一个通用的错误消息。(例如:此值无效)

$builder->add('chest', 'number')

我看到,对于这种表单字段,有invalid_message属性,我可以在其中放置特定的错误消息,它可以工作,但我不喜欢根据字段类型单独设置错误消息的方式。

也许我完全错了,我对这些有点困惑。

非常感谢您的帮助

Gilles

此类型约束检查您的属性是否为float值。

如果你使用文本类型,(如果你有一个基本的setter)"chest"属性将是一个字符串。所以它总是会在这个测试中失败。

如果使用数字类型,表单将尝试将提交的文本值转换为数字。当不可能时,您将获得您在"invalid_message"选项(或默认值)中设置的消息。

如果"chest"是严格的float,我建议你在表单中使用number类型。

或者你可以将类型约束" Type "选项设置为"numeric"。它接受数字格式的字符串值。参见:http://php.net/manual/en/function.is-numeric.php

希望有帮助!:)

如果我遇到这样的问题,我会将错误消息组织到验证器的语言文件中。

在实体中:

/**
 * @var float
 *
 * @ORM'Column(name="chest", type="float")
 *
 * @Assert'Type(type="float", message="chest.invalid")
 */
private $chest;

表单类型:

$builder->add('chest', 'number', array(
    "invalid_message" => "chest.invalid",
    "invalid_message_parameters" => array(
        "{{ type }}" => "float"
    )
));

在验证语言文件中:

# app/Resources/translations/validators.en.yml
chest.invalid: The value {{ value }} is not a type {{ type }} valid.

(之后需要清除缓存)

这可能是因为数据和表单字段类型都有单独的Constraint

既然你已经对数据本身设置了约束,我认为删除那些表单类型的约束是安全的。

你可能会做这样的事情(虽然,我从来没有尝试过):

$builder->add('chest', 'number', array('constraints': null))

这个工作吗?