2

如此处所述我正在使用GeoPositionFields. 因为 Zend 不支持这一点,所以我使用了标准RegEx验证器。

它工作得很好,但我仍然需要一个自定义错误消息 - 任何想法如何实现这一点?

我的例子中的那个什么都不做......

/**
 * @ORM\Column(type="string")
 * @Form\Filter({"name":"StringTrim"})
 * @Form\Validator({"name":"Regex", "options":{"pattern":"/(-?\d{1,3}\D\d+)[^\d-]+(-?\d{1,3}\D\d+)/"}})
 * @Form\ErrorMessage("My custom message")
 * @Form\Attributes({"type":"text"})
 * @Form\Options({"label":"GeoPos"})
 *
 */
protected $geopoint;

甚至这个也被忽略了:

@Form\Messages({"regexNotMatch": "My custom message"})
4

2 回答 2

8

您必须使用messages选项中的键覆盖默认消息。

试试这个(我想你必须把它剪成一行才能让注释起作用;)这取决于你,呵呵。

@Form\Validator({
    "name":"regex", 
    "options":{
        "pattern":"/(-?\d{1,3}\D\d+)[^\d-]+(-?\d{1,3}\D\d+)/",
        "messages":{
            "regexInvalid":"Regex is invalid, Booo!",
            "regexNotMatch": "Input doesn't match, bleeeeh!",
            "regexErrorous": "Internal error, i'm like wtf!"
        }
    }
})

每个验证器都有自己的消息。最好查看源代码以了解每个元素中存在哪些错误消息。举个例子,请点击此链接(单击)查看如何查找消息键。

当使用数组样式语法在注释之外创建表单时,对像这样的键采用统计方法可能会更安全一些

'messages' => array(
    \Zend\Validator\Regex::INVALID => "Regex is invalid, Booo!",
    //etc...
)

由于字符串 - 至少在理论上 - 总是可以改变,常数不会。

于 2012-12-28T11:08:59.137 回答
1
/^(\-?\d+(?:\.\d+)?),?\s*(\-?\d+(?:\.\d+)?)$/

此正则表达式验证并捕获 GEO 输入:

  • 格式纬度,经度
  • 格式纬度经度
  • 直接从 GoogleMaps 复制的坐标
于 2012-12-28T11:10:40.213 回答