Как добавить свое сообщение об ошибке в форму в нужное место после ее проверки?

Аватар пользователя engenes

Есть компонент формы на который я повесил функцию

<?php
$form
['submitted']['tel']['#element_validate'][] = '_custorm_validation_form_validate';
?>

в самой функции написал следующее

<?php
$subject 
$element['#value'];
        if(
$element['#webform_component']['form_key'] == 'tel'){
            
$pattern '/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/';
            
$result preg_match($pattern$subject);
            if(!
$result){
                
form_error($element'Поле Телефон заполненно некорректно');
            };                
        }
?>

при этом сообщение всплывает над формой.
Как мне создать произвольные блок в форме в который я смогу поместить это сообщение?
пробовал вот так:

<?php
$form
['submitted']['tel']['#webform_component']['#suffix'] =  111;
?>

но ничего не появилось

Модули и темы:
Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя Olegars
Olegars 2 месяца назад

http://www.angarsky.ru/drupal/ispolzovanie-ajax-s-drupal-forms-api.html

Обратите внимание, что помимо формы, я еще возвращаю Drupal messages. Казалось бы, мелочь, а на самом деле штука полезная: сообщения выводятся возле нужной формы (а не где-то там вверху страницы при перезагрузке), информируя об этом пользователя.

Аватар пользователя engenes
engenes 2 месяца назад

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

Аватар пользователя Olegars
Olegars 2 месяца назад

Кто бы мне мои задачи поделал бы, тут, да еще и бесплатно.

не совсем понятно как добавить дополнительный элемент в форму после того как я получаю ошибку.

ajax-ом

Аватар пользователя Semantics
Semantics 2 месяца назад

Кстати, да.
Если это просто сообщение и не требует дополнительной логики.
То проще либо через jQuery туда добавиться, либо аяксом.

Аватар пользователя engenes
engenes 2 месяца назад

это веб-форма она сейчас работает на ajax. Соответственно моя функция тоже должна выполняться.
Ведь сначала идет запрос на сервер, после этого этого срабатывает мой хук и генерируется обновленная форма. Разве нет?
хук у меня рабочий, так мое сообщение об ошибки которое я добавил в код всплывает, если условие не выполнено. Поэтому и задал сюда вопрос, как добавить не только произвольное сообщение об ошибке но и дооплнительный элемент.

Аватар пользователя engenes
engenes 2 месяца назад

почему именно ajax? а не с помощью форм api?

Аватар пользователя Semantics
Semantics 2 месяца назад

Потому что, вы сначала спрашиваете одно, а потом пишите, что вам нужно совсем другое

Аватар пользователя engenes
engenes 2 месяца назад

ну как же другое? все то же: я спросил как добавить новый элемент в форму после того как появляется сообщение об ошибке.
Форма у меня и так работает на ajax. мой вопрос не изменился, через jquery я могу сделать такую вещь, но думал что это же можно сделать и с помощью php и форм api.

Аватар пользователя Olegars
Olegars 2 месяца назад

по ссылке все расписано, если не получается, за 5 тыр могу сделать