Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
ea1280d7
Commit
ea1280d7
authored
Oct 11, 2012
by
webchick
Browse files
Issue
#1805688
by fubhy: Added Support methods as #element_validate() callbacks.
parent
92a5b299
Changes
3
Hide whitespace changes
Inline
Side-by-side
core/includes/form.inc
View file @
ea1280d7
...
...
@@ -1422,8 +1422,8 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
// Call any element-specific validators. These must act on the element
// #value data.
elseif
(
isset
(
$elements
[
'#element_validate'
]))
{
foreach
(
$elements
[
'#element_validate'
]
as
$
function
)
{
$function
(
$elements
,
$form_state
,
$form_state
[
'complete_form'
]);
foreach
(
$elements
[
'#element_validate'
]
as
$
callback
)
{
call_user_func_array
(
$callback
,
array
(
&
$elements
,
&
$form_state
,
&
$form_state
[
'complete_form'
])
)
;
}
}
...
...
core/modules/system/tests/modules/form_test/form_test.module
View file @
ea1280d7
...
...
@@ -5,6 +5,8 @@
* Helper module for the form API tests.
*/
use
Drupal\form_test
\
Callbacks
;
/**
* Implements hook_menu().
*/
...
...
@@ -385,11 +387,13 @@ function system_form_form_test_alter_form_alter(&$form, &$form_state) {
* should be contained in the rebuilt form.
*/
function
form_test_validate_form
(
$form
,
&
$form_state
)
{
$object
=
new
Callbacks
();
$form
[
'name'
]
=
array
(
'#type'
=>
'textfield'
,
'#title'
=>
'Name'
,
'#default_value'
=>
''
,
'#element_validate'
=>
array
(
'form_test_element_
validate
_n
ame'
),
'#element_validate'
=>
array
(
array
(
$object
,
'
validate
N
ame'
)
)
,
);
$form
[
'submit'
]
=
array
(
'#type'
=>
'submit'
,
...
...
@@ -403,42 +407,6 @@ function form_test_validate_form($form, &$form_state) {
return
$form
;
}
/**
* Form element validation handler for 'name' in form_test_validate_form().
*/
function
form_test_element_validate_name
(
&
$element
,
&
$form_state
)
{
$triggered
=
FALSE
;
if
(
$form_state
[
'values'
][
'name'
]
==
'element_validate'
)
{
// Alter the form element.
$element
[
'#value'
]
=
'#value changed by #element_validate'
;
// Alter the submitted value in $form_state.
form_set_value
(
$element
,
'value changed by form_set_value() in #element_validate'
,
$form_state
);
$triggered
=
TRUE
;
}
if
(
$form_state
[
'values'
][
'name'
]
==
'element_validate_access'
)
{
$form_state
[
'storage'
][
'form_test_name'
]
=
$form_state
[
'values'
][
'name'
];
// Alter the form element.
$element
[
'#access'
]
=
FALSE
;
$triggered
=
TRUE
;
}
elseif
(
!
empty
(
$form_state
[
'storage'
][
'form_test_name'
]))
{
// To simplify this test, just take over the element's value into $form_state.
form_set_value
(
$element
,
$form_state
[
'storage'
][
'form_test_name'
],
$form_state
);
$triggered
=
TRUE
;
}
if
(
$triggered
)
{
// Output the element's value from $form_state.
drupal_set_message
(
t
(
'@label value: @value'
,
array
(
'@label'
=>
$element
[
'#title'
],
'@value'
=>
$form_state
[
'values'
][
'name'
])));
// Trigger a form validation error to see our changes.
form_set_error
(
''
);
}
}
/**
* Form validation handler for form_test_validate_form().
*/
...
...
core/modules/system/tests/modules/form_test/lib/Drupal/form_test/Callbacks.php
0 → 100644
View file @
ea1280d7
<?php
/**
* @file
* Definition of Drupal\form_test\Callbacks.
*/
namespace
Drupal\form_test
;
/**
* Simple class for testing methods as element validation callbacks.
*/
class
Callbacks
{
/**
* Form element validation handler for 'name' in form_test_validate_form().
*/
public
function
validateName
(
&
$element
,
&
$form_state
)
{
$triggered
=
FALSE
;
if
(
$form_state
[
'values'
][
'name'
]
==
'element_validate'
)
{
// Alter the form element.
$element
[
'#value'
]
=
'#value changed by #element_validate'
;
// Alter the submitted value in $form_state.
form_set_value
(
$element
,
'value changed by form_set_value() in #element_validate'
,
$form_state
);
$triggered
=
TRUE
;
}
if
(
$form_state
[
'values'
][
'name'
]
==
'element_validate_access'
)
{
$form_state
[
'storage'
][
'form_test_name'
]
=
$form_state
[
'values'
][
'name'
];
// Alter the form element.
$element
[
'#access'
]
=
FALSE
;
$triggered
=
TRUE
;
}
elseif
(
!
empty
(
$form_state
[
'storage'
][
'form_test_name'
]))
{
// To simplify this test, just take over the element's value into $form_state.
form_set_value
(
$element
,
$form_state
[
'storage'
][
'form_test_name'
],
$form_state
);
$triggered
=
TRUE
;
}
if
(
$triggered
)
{
// Output the element's value from $form_state.
drupal_set_message
(
t
(
'@label value: @value'
,
array
(
'@label'
=>
$element
[
'#title'
],
'@value'
=>
$form_state
[
'values'
][
'name'
])));
// Trigger a form validation error to see our changes.
form_set_error
(
''
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment