Drupal 8
class ExampleForm extends FormBase {
...
/**
* Form builder.
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['#id'] = 'example-form';
$form['refresh_button'] = [
...
'#ajax' => [
'callback' => '::ajaxUpdateForm',
'wrapper' => 'example-form',
],
];
return $form;
}
/**
* Ajax update all form.
*/
public function ajaxUpdateForm(array $form, FormStateInterface $form_state) {
return $form;
}
}
Drupal 7
/**
* Form builder
*/
function mymodule_test_form() {
// ...
$form['#prefix'] = '<div id="test-form-wrapper">';
$form['#suffix'] = '</div>';
$form['refresh_button'] = array(
'#type' => 'button',
'#value' => 'Refresh',
'#ajax' => array(
'callback' => 'mymodule_test_form_refresh',
'wrapper' => 'test-form-wrapper',
),
);
return $form;
}
/**
* Ajax callback
*/
function mymodule_test_form_refresh($form, $form_state) {
return $form;
}
Написанное актуально для
Drupal 7, Drupal 8
Похожие записи
- Показать второй шаг многошаговой формы в модальном окне
- Навесить на элемент managed_file свой ajax callback (Как обновить всю форму при загрузки файла в managed_file)
- Восстанавливаем позицию текстового курсора при ajax обновлении формы
- Как выполнять свой js-код до или после любых AJAX запросов (изменение работы AJAX API)
- AJAX в форме корзины Commerce 2
Комментарии
A как с помощью ajax сделать автосабмит для формы?
Смотря что такое автосабмит, если зависимые селекты, то там уже есть событие change.
Если текстовые поля, то достаточно навесить ajax обработчик на событие "blur"
Спасибо за Вашу статьи очень помогает.
Вопрос: КАК обновить всю страницу по изменению значения textfield в форме?
http://xandeadx.ru/blog/drupal/579
Имеем функцию, выводящую форму в блоке:
и, собственно, форму с автосабмитом:
резульаты выбора опций из формы переопределяют вывод зависимых значени вьюхи посредством функции:
Пытаюсь прикрутить к данной форме AJAX:
Визуально наблюдаю крутящийся кружок работы AJAX, но результаты формы не меняются...
Подскажите, что не так, ибо с автосабмитом форма работает отлично, но только после перезагрузки страницы соответственно?!
ajax callback должен возвращать набор команд или часть формы
Пробовал ставить методом "научного" тыка 'callback' => 'mymodule_test_form' и 'callback' => 'mymodule_block_view' ... более вроде нет зависимых от результатов выбранных в форме опций функций, однако форма никак не хочет работать также как с простейшим автосабмитом на javascript (this.form.submit()).
Может поделитесь хотябы ссылкой где копать в данном направлении, ведь задача вроде бы банальная, но что-то сути я не улавливаю..
http://drupal.org/node/752056
Спасибо за ссылку, почитал, проработал примеры, понял что callback вызывает специально созданную дополнительную функцию, которая с помощью return возвращает результат, будь то та же форма или что-то другое, причем выбранную опцию можно получить по $_POST, и этот результат вставляется в место указанное wrapper.
Но, к сожалению, так и не понял как это связать с моим views_query_alter...
Видно не судьба.
Привет,
если нужно во время клика на кнопку button удалить элемент с формы и одновременно удалить запись с базы, то обработку и запрос db_delete тоже в теле формы mymodule_test_form() писать? Может я не правильно что то понял, почитал как было описано тут http://xandeadx.ru/blog/drupal/387
Добрый день.
При обновлении формы заметил одну неприятную вещь.
А именно, если есть форма с тремя элементами SELECT (например, список стран, список регионов по данной стране и список населенных пунктов по данному региону) и при обновлении первого элемента (выборе новой страны) должен автоматически обновляться и устанавливаться в значение по умолчанию список регионов и список населенных пунктов.
В общем, списки обновляются, значения по умолчанию правильно вычисляются, но почему-то не устанавливаются. Пытаюсь устанавливать значения с помощью #default_value.
Вы не знаете, в чем могут быть проблемы ?
Для Drupal 8 разве не нужно ещё $form_state->setRebuild(); ?
Добавить комментарий