summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcatch2012-09-24 09:15:37 (GMT)
committercatch2012-09-24 09:15:37 (GMT)
commitf5955bfeadd20ca4567a32824a274b7347f8cb65 (patch)
tree7e7619ca66c2c9ded24fff9299b7758868f63e55
parent6da30cc2e5c62cdef6fba947772cdb1c66eb8dd4 (diff)
Issue #1785436 by Boobaa: Fixed Submission of #required elements without #title and empty value does not display any error.
-rw-r--r--core/includes/form.inc2
-rw-r--r--core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php32
-rw-r--r--core/modules/system/tests/modules/form_test/form_test.module27
3 files changed, 60 insertions, 1 deletions
diff --git a/core/includes/form.inc b/core/includes/form.inc
index 29bce00..5f580fb 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -4590,7 +4590,7 @@ function _form_set_class(&$element, $class = array()) {
$element['#attributes']['required'] = 'required';
$element['#attributes']['aria-required'] = 'true';
}
- if (isset($element['#parents']) && form_get_error($element)) {
+ if (isset($element['#parents']) && form_get_error($element) !== NULL) {
$element['#attributes']['class'][] = 'error';
}
}
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
index 3fc5bd4..2586aa3 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/FormTest.php
@@ -220,6 +220,38 @@ class FormTest extends WebTestBase {
}
/**
+ * Tests validation for required textfield element without title.
+ *
+ * Submits a test form containing a textfield form element without title.
+ * The form is submitted twice, first without value for the required field
+ * and then with value. Each submission is checked for relevant error
+ * messages.
+ *
+ * @see form_test_validate_required_form_no_title()
+ */
+ function testRequiredTextfieldNoTitle() {
+ $form = $form_state = array();
+ $form = form_test_validate_required_form_no_title($form, $form_state);
+
+ // Attempt to submit the form with no required field set.
+ $edit = array();
+ $this->drupalPost('form-test/validate-required-no-title', $edit, 'Submit');
+ $this->assertNoRaw("The form_test_validate_required_form_no_title form was submitted successfully.", 'Validation form submitted successfully.');
+
+ // Check the page for the error class on the textfield.
+ $this->assertFieldByXPath('//input[contains(@class, "error")]', FALSE, 'Error input form element class found.');
+
+ // Submit again with required fields set and verify that there are no
+ // error messages.
+ $edit = array(
+ 'textfield' => $this->randomString(),
+ );
+ $this->drupalPost(NULL, $edit, 'Submit');
+ $this->assertNoFieldByXpath('//input[contains(@class, "error")]', FALSE, 'No error input form element class found.');
+ $this->assertRaw("The form_test_validate_required_form_no_title form was submitted successfully.", 'Validation form submitted successfully.');
+ }
+
+ /**
* Test default value handling for checkboxes.
*
* @see _form_test_checkbox()
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index 45b3cba..3c322a6 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -30,6 +30,13 @@ function form_test_menu() {
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
+ $items['form-test/validate-required-no-title'] = array(
+ 'title' => 'Form #required validation without #title',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('form_test_validate_required_form_no_title'),
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
$items['form-test/limit-validation-errors'] = array(
'title' => 'Form validation with some error suppression',
'page callback' => 'drupal_get_form',
@@ -489,6 +496,26 @@ function form_test_validate_required_form_submit($form, &$form_state) {
}
/**
+ * Form constructor to test the #required property without #title.
+ */
+function form_test_validate_required_form_no_title($form, &$form_state) {
+ $form['textfield'] = array(
+ '#type' => 'textfield',
+ '#required' => TRUE,
+ );
+ $form['actions'] = array('#type' => 'actions');
+ $form['actions']['submit'] = array('#type' => 'submit', '#value' => 'Submit');
+ return $form;
+}
+
+/**
+ * Form submission handler for form_test_validate_required_form_no_title().
+ */
+function form_test_validate_required_form_no_title_submit($form, &$form_state) {
+ drupal_set_message('The form_test_validate_required_form_no_title form was submitted successfully.');
+}
+
+/**
* Builds a simple form with a button triggering partial validation.
*/
function form_test_limit_validation_errors_form($form, &$form_state) {