簡體   English   中英

Zend Framework 2 - 注釋表單,RegEx驗證和自定義錯誤消息

[英]Zend Framework 2 - Annotation form, RegEx validation and custom error messages

如上所述我正在使用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"})

您必須使用選項中的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。 舉個例子,請點擊此鏈接(點擊)查看如何了解消息密鑰。

當使用array-style-syntax創建Annotations之外的表單時,對於像這樣的鍵的statis方法可能會更安全一點

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

因為字符串 - 至少在理論上 - 總是可以改變,所以常量不會。

/^(\-?\d+(?:\.\d+)?),?\s*(\-?\d+(?:\.\d+)?)$/

此正則表達式驗證並捕獲GEO輸入:

  • 格式為Latitude,Longitude
  • 格式為Latitude Longitude
  • 直接從GoogleMaps復制的坐標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM