Istnieje błąd w Drupalu polegający na tym, że komunikaty po walidacji formularza niekoniecznie są pokazywane w dobrej kolejności. Przykładowo, jeśli w formularzu rejestracji użytkownika dodamy kilka dodatkowych pól i zmienimy ich kolejność wyświetlania to komunikaty walidacji nie będą właściwie posortowane. Niestety jest to błąd rdzenia Drupala (konkretnie w pliku /includes/form.inc) i wymaga zastosowania Patch'a.
Patch: https://qa.drupal.org/pifr/test/388683
Instalacja Patch'a może polegać na prostej edycji pliku form.inc
(przykład ręcznej instalacji innego patcha: http://www.ostraining.com/blog/drupal/patches/)
W pliku form.inc zamieniamy te 2 linijki:
- // Recurse through all children.
- foreach (element_children($elements) as $key) {
na tych 6 linijek:
+ // Recurse through all children, sorting the elements so that the order of
+ // error messages displayed to the user matches the order of elements in
+ // the form. Use a copy of $elements so that it is not modified by the
+ // sorting itself.
+ $elements_copy = $elements;
+ foreach (element_children($elements_copy, TRUE) as $key) {
a dalej następuje kod:
if (isset($elements[$key]) && $elements[$key]) {
_form_validate($elements[$key], $form_state);
}
Patch: https://qa.drupal.org/pifr/test/388683
Instalacja Patch'a może polegać na prostej edycji pliku form.inc
(przykład ręcznej instalacji innego patcha: http://www.ostraining.com/blog/drupal/patches/)
W pliku form.inc zamieniamy te 2 linijki:
- // Recurse through all children.
- foreach (element_children($elements) as $key) {
na tych 6 linijek:
+ // Recurse through all children, sorting the elements so that the order of
+ // error messages displayed to the user matches the order of elements in
+ // the form. Use a copy of $elements so that it is not modified by the
+ // sorting itself.
+ $elements_copy = $elements;
+ foreach (element_children($elements_copy, TRUE) as $key) {
a dalej następuje kod:
if (isset($elements[$key]) && $elements[$key]) {
_form_validate($elements[$key], $form_state);
}
Brak komentarzy:
Prześlij komentarz