#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]
.