Ошибка: Вызов представления функции-члена() в массиве в файле .theme после обновления Drupal 9

#php #drupal-8 #drupal-views #drupal-9

Вопрос:

Работал над обновлением сайта с Drupal 8 до 9 и обнаружил эту ошибку в файле .theme сайта:

Ошибка: Вызов представления функции-члена() в массиве

Это исходный массив, который был написан для Drupal 7/8:

 // ORIGINAL Capture viewable blocks and their settings to $build for Drupal 8
    $build = array();
    foreach ($blocks as $key => $block) {
      if ($block->access('view')) {
        $build[$key] = entity_view($block, 'block'); 
        }
    }
 

Я использовал это для обновления функции entity_view: https://www.drupal.org/node/3033656

Обновление: Приведенное ниже работает, если это поможет кому-либо еще.

 // Capture viewable blocks and their settings to $build
    $build = array();
    foreach ($blocks as $key => $block) {
      if ($block->access('view')) {
        $builder = Drupal::entityTypeManager()->getViewBuilder('block');
        $build[$key] = $builder->view($block, 'block');
        }
    }
 

Комментарии:

1. Похоже, это просто опечатка. Ты хотел сказать $builder[$key] ? Это определяет массив, но затем вы просто ссылаетесь на этот $builder массив впоследствии, а не на объект внутри $builder[$key] .