Browse Source

Added form helper option 'useValidationMessages' to opt-in to custom html5 validation

Jeremy Harris 8 years ago
parent
commit
00ed234cfb
2 changed files with 6 additions and 4 deletions
  1. 4 2
      src/View/Helper/FormHelper.php
  2. 2 2
      tests/TestCase/View/Helper/FormHelperTest.php

+ 4 - 2
src/View/Helper/FormHelper.php

@@ -163,7 +163,9 @@ class FormHelper extends Helper
             'textarea' => '<textarea name="{{name}}"{{attrs}}>{{value}}</textarea>',
             // Container for submit buttons.
             'submitContainer' => '<div class="submit">{{content}}</div>',
-        ]
+        ],
+        // set HTML5 validation message to custom required/empty messages
+        'useValidationMessages' => false,
     ];
 
     /**
@@ -1434,7 +1436,7 @@ class FormHelper extends Helper
         }
 
         $message = $context->getRequiredMessage($fieldName);
-        if ($options['required'] && $message) {
+        if ($options['required'] && $message && $this->getConfig('useValidationMessages')) {
             $message = htmlspecialchars(addslashes($message));
             $options['oninvalid'] = "this.setCustomValidity('$message')";
             $options['onvalid'] = "this.setCustomValidity('')";

+ 2 - 2
tests/TestCase/View/Helper/FormHelperTest.php

@@ -8340,8 +8340,6 @@ class FormHelperTest extends TestCase
                     'required' => 'required',
                     'id' => '0-comments-1-comment',
                     'rows' => 5,
-                    'onvalid' => 'this.setCustomValidity(&#039;&#039;)',
-                    'oninvalid' => 'this.setCustomValidity(&#039;This field cannot be left empty&#039;)',
                 ],
                 '/textarea',
             '/div'
@@ -8426,6 +8424,8 @@ class FormHelperTest extends TestCase
      */
     public function testHtml5ErrorMessage()
     {
+        $this->Form->setConfig('useValidationMessages', true);
+
         $validator = (new \Cake\Validation\Validator())
             ->requirePresence('email', true, 'Custom error message')
             ->requirePresence('password')