Drupal → Последовательно запустить два Batch-а
Если нужно выполнить последовательно два Batch-а и операции второго Batch-а не зависят от результатов первого, то достаточно подряд вызвать batch_set()
, а если зависят, то:
function mymodule_myform_submit($form, &$form_state) { // Создаём операции для первого batch-а $operations = array(); for ($i = 0; $i < 100; $i++) { $operations[] = array('mymodule_first_batch_operation', array()); } // В конец добавляем операцию для запуска второго batch-а $operations[] = array('mymodule_start_second_batch', array()); // Запускаем первый batch batch_set(array( 'operations' => $operations, ... )); } function mymodule_first_batch_operation(&$context) { ... // Сохраняем данные для второго batch-а $context['results']['data_for_second_batch'][] = '...'; } function mymodule_start_second_batch(&$context) { // Создаём операции для второго batch-а на основе данных первого $operations = array(); foreach ($context['results']['data_for_second_batch'] as $item) { $operations[] = array(...); } // Запускаем второй batch batch_set(array( 'operations' => $operations, ... )); }
Т.е. основная идея — это добавить отдельную операцию для создания и запуска второго batch-a, в которой будут доступны нужные данные из первого.
Комментарии
Однако, будем пробовать. Спасибо!
Оставить комментарий