2014-01-13 1 views
0

Я новичок в CakePHP и делаю свое первое приложение - первый блог из учебника cakephp. Все в порядке, но меня беспокоит одна вещь. Когда я определяю правила проверки в моей модели, валидации работают.Различные сообщения проверки в разных веб-браузерах

Но каждый веб-браузер показывает другое сообщение. Например, сообщение firefox show на чешском языке (я из чешского), chrome show «Пожалуйста, заполните это поле» и выставку Internet Explorer. «Это поле не может быть пустым». Поэтому я попытался перевести сообщения (добавив сообщение параметра в подтверждение модели). это работает, но только в Internet Explorer, другие браузеры без изменений. Есть ли способ, как одни и те же сообщения о проверке одинаковы во всех браузерах?

Validation в модели:

public $validate = array(
     'title' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please fill.....' 
     ), 
+0

Это поле автоматически переводится с помощью файлов PO. См. Документацию. – mark

+0

Кажется, что проблема связана с атрибутом 'required' для входов (попробуйте этот пример http://www.wufoo.com/html5/attributes/09-required.html, он дает разные ошибки в разных браузерах). Насколько я понимаю, это не зависит от реализации cakephp или языка. Вы можете попробовать изменить его следующим образом: http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom-validation-message – Nunser

+0

Нансер: Спасибо, я попробую ... – telman

ответ

0

Я думаю, вы говорите о клиентских сообщениях проверки на стороне. Если я прав, сообщения, которые вы видите, созданы вашим браузером и являются браузером. Cake просто сообщает браузеру, что это поле необходимо, установив требуемое свойство во входном теге.

Вместо этого фактическая проверка, что торт делает, сделана на стороне сервера. Если ваш браузер отправляет данные на сервер, то торт проверяет данные и возвращает сообщения об ошибках

0

Имеются две проверки. Первый (тот, который вы видите) является проверкой на стороне клиента. Поле ввода имеет требуемый параметр. Поэтому браузер знает, что поле не может быть пустым и говорит, чем на его языке. До сих пор на сервер ничего не отправлено. После заполнения и отправки формы, тогда выполняется вторая проверка, которая является валидацией cakephp.

Попробуйте с этим:

'title' => array(
     'kosher' => array(
      'rule' => 'email', 
      'message' => 'Please make sure your email is entered correctly.' 
     ), 
     'required' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please enter your email.' 
     ) 

Тогда вы увидите: 1) если вы не введёте ничего, то появляется сообщение браузер (на стороне клиента), 2), если ввести текст, который не является электронной почты , то появляется сообщение сверху ('Пожалуйста, введите свой адрес электронной почты.')