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オプションのキーを使用して、デフォルトのメッセージを上書きする必要があります。

これを試してみてください (注釈を機能させるには、これを 1 行にトリミングする必要があると思います ;) それはあなた次第です。

@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!"
        }
    }
})

各バリデータには独自のメッセージがあります。ソース コードを参照して、各要素内に存在するエラー メッセージを確認することをお勧めします。例を挙げると、このリンク (クリック)をたどって、メッセージキーについて調べる方法を確認してください。

アノテーションの外でフォームを作成するために array-style-syntax を使用する場合は、次のようなキーに対して statis アプローチを使用する方が少し安全かもしれません。

'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 に答える