Доброго дня!
Drupal 9. php.
Есть батч
$batch = new BatchBuilder();
который много раз запрашивает разные данные через api у стороннего сервера
$batch->addOperation([$this, 'request_data1'], [$params]);
...
$batch->addOperation([$this, 'request_datan'], [$params]);
Этапы батча получают параметры и складывают их в результаты
public function request_data1($op, &$context)
{
$context['results']['data1'] = API::GET('some params');
}
по завершениии я все эти данные успешно вижу
public function batch_complete($success, $results, $operations)
{
dpm($results);
}
а теперь вопрос.
Как с этими данными сгенерировать и отобразить форму?
Данных довольно много. Через GET или POST не передать.
Комментарии
Сессии.
В батче:
<?php
...
public function batch_complete($success, $results, $operations) {
$session = \Drupal::request()->getSession();
$session->set('batch_results', $results);
}
...
?>
В форме (контейнер форм в D9 обычно уже содержит экземпляр Request):
<?php
...
public function buildForm(array $form, FormStateInterface $form_state) {
$session = $this->getRequest()->getSession();
if ($session->get('batch_results')) {
$results = $session->get('batch_results');
// Заполняем из $results значения полей формы здесь...
// ...
\Drupal::messenger()->addMessage('Найдены данные из батча');
// Очищаем сессию. Можно сделать это и позже, на сабмите.
$session->remove('batch_results');
}
else{
\Drupal::messenger()->addMessage('Не найдены данные из батча');
}
}
...
?>