Если нужно выполнить последовательно два 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, в которой будут доступны нужные данные из первого.
Написанное актуально для
Drupal 7
Комментарии
Однако, будем пробовать. Спасибо!
Добавить комментарий