Как присвоить элементу формы более одного callback?

Аватар пользователя Lord of Cats

Добрый день.

Подскажите, пожалуйста, для одного элемента формы можно ли применять более одного 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 еще один?

Тип материала:
Версия Drupal:
0 Thanks

Лучший ответ

Комментарии

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

$commands[]...
$commands[]...

Аватар пользователя Lord of Cats
Lord of Cats 5 месяцев назад

Ну это понятно, что так можно. Я имею в виду, что можно ли после выполнения функции my_callback_one выполнить другую функцию, например, my_callback_two.

Аватар пользователя bumble
bumble 5 месяцев назад
<?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);
}
?>
Аватар пользователя Lord of Cats
Lord of Cats 5 месяцев назад

У меня пока таким способом не получилось вызвать. Непонятно что это за $data такая :)

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

Ну, Вам же нужно что-то от 2го коллбека получить.

Аватар пользователя Lord of Cats
Lord of Cats 5 месяцев назад

Мне нужно просто чтобы он выполнился вслед за первым и выполнил какие-то Ajax-команды. То есть первый коллбек выполнил какие то Ajax-команды, затем после него пошел второй коллбек выполнятся со своим набором Ajax-команд.

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

Вы совершенно не правильно представляете логику работы AJAX-команд.

Аватар пользователя Lord of Cats
Lord of Cats 5 месяцев назад

Может быть. Т.е. то, что я спрашиваю невозможно сделать?

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

Ну, на то что Вы спросили (про "выполнение более одной процедуры") - Вам написали что можно, и написали как.
Дело в том, что Вы, буквально, хотите возвращать несколько элементов, в месте, где должен возвращаться один. И это нонсенс.