Добрый день.
Подскажите, пожалуйста, для одного элемента формы можно ли применять более одного callback?
Пример кода в hook_form:
<?php
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
'#ajax' => array(
'callback' => 'my_callback_one'
)
);
?>
Функция в модуле:
<?php
/**
* Callback-функция
*/
function my_callback_one($form, &$form_state) {
$commands[] = ajax_command_alert('RUN CALLBACK ONE');
return array('#type' => 'ajax', '#commands' => $commands);
}
?>
Можно добавить к уже существующему callback еще один?
Комментарии
$commands[]...
$commands[]...
Ну это понятно, что так можно. Я имею в виду, что можно ли после выполнения функции my_callback_one выполнить другую функцию, например, my_callback_two.
<?php
/**
* Callback-функция
*/
function my_callback_one($form, $form_state) {
// Вызывайте любой другой коллбек
$data = my_callback_two($form, $form_state);
$commands[] = ajax_command_alert('RUN CALLBACK ONE');
return array('#type' => 'ajax', '#commands' => $commands);
}
?>
У меня пока таким способом не получилось вызвать. Непонятно что это за $data такая
Ну, Вам же нужно что-то от 2го коллбека получить.
Мне нужно просто чтобы он выполнился вслед за первым и выполнил какие-то Ajax-команды. То есть первый коллбек выполнил какие то Ajax-команды, затем после него пошел второй коллбек выполнятся со своим набором Ajax-команд.
Вы совершенно не правильно представляете логику работы AJAX-команд.
Может быть. Т.е. то, что я спрашиваю невозможно сделать?
Ну, на то что Вы спросили (про "выполнение более одной процедуры") - Вам написали что можно, и написали как.
Дело в том, что Вы, буквально, хотите возвращать несколько элементов, в месте, где должен возвращаться один. И это нонсенс.
Значит я не правильно подхожу к задаче. Проблему описал в https://drupal.ru/node/136651#comment-710419.
> Но теперь мне надо её как то вызвать после того как изменилось значение в текстовом поле.
Вам надо использовать или ajax framework или js событие
https://www.drupal.org/docs/7/api/javascript-api/ajax-forms-in-drupal-7
https://api.drupal.org/api/drupal/includes%21ajax.inc/group/ajax_command...