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

Главные вкладки

Аватар пользователя engenes engenes 5 августа 2018 в 16:52

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

<?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;
?>

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

Комментарии

Аватар пользователя Olegars Olegars 5 августа 2018 в 17:46

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

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

Аватар пользователя engenes engenes 5 августа 2018 в 17:55

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

Аватар пользователя Olegars Olegars 5 августа 2018 в 18:14

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

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

ajax-ом

Аватар пользователя Semantics Semantics 5 августа 2018 в 18:15

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

Аватар пользователя engenes engenes 5 августа 2018 в 18:30

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

Аватар пользователя engenes engenes 5 августа 2018 в 18:51

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