Zend Framework 2 - Форма аннотации, проверка RegEx и пользовательские сообщения об ошибках

Как указано здесь Я работаю с 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"})
2
добавлено отредактировано
Просмотры: 1

2 ответы

Вам придется перезаписать сообщения по умолчанию с помощью клавиши 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!"
        }
    }
})

У каждого валидатора есть свои собственные сообщения. Лучше всего рекомендуется увидеть исходный код, чтобы узнать, какие сообщения ErrorMessages присутствуют в каждом элементе. Чтобы привести пример, выполните это (нажмите) , чтобы узнать, как узнать о клавишах сообщений.

При использовании синтаксиса типа массива для создания форм вне аннотаций может быть немного безопаснее перейти к подходу statis для таких ключей, как

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

Поскольку струны - по крайней мере в теории - всегда могут измениться, константы не будут.

7
добавлено
hm ... до сих пор нет реакции: @Form \ Validator ({"name": "Regex", "options": {"pattern": "/ (-? \ d {1,3} \ D \ d + ) [^ \ d -] + (-? \ d {1,3} \ D \ d & zwnj; +)/"}," messagesTemplates ": {" regexInvalid ":" Regex is invalid, Booo! "," regexNotMatch ":" Ввод не соответствует, bleeeeh! "," RegexErrorous ":" Внутренняя ошибка, я похож на wtf! "}})
добавлено автор Ron, источник
yep, по умолчанию. и нет, просто отлично ...
добавлено автор Ron, источник
ok, теперь он работает, неуместен } :) Еще раз спасибо!
добавлено автор Ron, источник
Получаете ли вы сообщения об ошибках по умолчанию, если вы покидаете шаблоны? Какие-то ошибки вообще?
добавлено автор Sam, источник
Мой плохой, это сообщения not messagesTemplates - отредактирован ответ, извините.
добавлено автор Sam, источник
/^(\-?\d+(?:\.\d+)?),?\s*(\-?\d+(?:\.\d+)?)$/

Это регулярное выражение проверяет и фиксирует ввод ГЭП:

  • In format Latitude, Longitude
  • In format Latitude Longitude
  • Coordinates copied directly from GoogleMaps
1
добавлено
спасибо за ответ, но выражение здесь не вопрос;)
добавлено автор Ron, источник
@Ron, пусть это будет хорошим дополнением к этому вопросу. Kinda Новогодний подарок :)
добавлено автор Paul T. Rawkeen, источник