如上所述here我正在使用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"})
答案 0 :(得分:7)
您必须使用选项中的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!"
}
}
})
每个Validator都有自己的消息。建议您查看源代码以找出每个元素中存在的ErrorMessages。举个例子,请点击this link (click)查看如何了解消息密钥。
当使用array-style-syntax创建Annotations之外的表单时,对于像
这样的键,可能会更安全一些。'messages' => array(
\Zend\Validator\Regex::INVALID => "Regex is invalid, Booo!",
//etc...
)
由于字符串 - 至少在理论上 - 总是可以改变,因此常量不会。
答案 1 :(得分:1)
/^(\-?\d+(?:\.\d+)?),?\s*(\-?\d+(?:\.\d+)?)$/
此正则表达式验证并捕获GEO输入: