Я пытаюсь создать плагин поля просмотра, который предоставляет мне некоторые дополнительные функции для поля. У меня проблемы с этим.
У меня есть тип сущности, называемый lms_request. Внутри него множество пучков.
При использовании пользовательского «плагина поля представлений» в представлении, которое специально фильтрует один пакет, он работает нормально.
Когда я пытаюсь использовать одно и то же поле в представлении, в котором отфильтровано несколько пакетов или вообще не отфильтровано ни одного пакета (чтобы показать все), возникает ошибка, не позволяющая мне отображать представление. Выдает такую ошибку:
Примечание: Неопределенный индекс: изменить в Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
а также Ошибка: неподдерживаемые типы операндов в Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
Если я войду в определение fieldplugin и установлю переопределение определить параметры
общедоступная функция defineOptions() {
вернуть parent::defineOptions();
}
Я получаю следующее в dblog (3 раза)
Примечание: попытка доступа к смещению массива для значения типа null в Drupal\views\Plugin\views\field\FieldPluginBase->defineOptions()
Меня смущает, почему при фильтрации одного пакета он работает должным образом, но как только я удаляю фильтр или устанавливаю фильтр на несколько пакетов, он разбивает поле.
Мой hook_views_data() выглядит так:
функция lms_request_views_data() {
$data['lms_request']['request_system_quick_edit'] = [
'title' => t('Запрос на быстрое редактирование'),
'help' => t('Форма запроса быстрого редактирования'),
'поле' => [
'id' => 'request_system_quick_edit',
],
];
вернуть $данные;
}
Где «request_system_quick_edit» — это имя созданного мной плагина настраиваемого поля.
Код плагина поля выглядит так:
<?php
пространство имен Drupal\request_system\Plugin\views\field;
используйте Drupal\views\Plugin\views\field\FieldPluginBase;
используйте Drupal\views\ResultRow;
используйте Drupal\Core\Form\FormStateInterface;
используйте Drupal\Core\Url;
/**
* Предоставляет обработчик полей быстрого редактирования.
*
* @ViewsField("request_system_quick_edit")
*
* @DCG
* Плагин должен быть назначен определенному столбцу таблицы через
* hook_views_data() или hook_views_data_alter().
* Для несуществующих столбцов (т.е. вычисляемых полей) необходимо переопределить
* метод self::query().
*/
класс QuickEdit расширяет FieldPluginBase {
защищенное $хранилище;
защищенная таксономия $;
защищенный $library_item;
/**
* {@inheritdoc}
*/
публичная функция __construct() {
$this->storage = \Drupal::entityTypeManager()->getStorage('lms_request');
$this->taxonomy = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
$this->library_item = \Drupal::entityTypeManager()->getStorage('item_type');
}
/**
* {@inheritdoc}
*/
запрос публичной функции () {
}
// /**
// * {@inheritdoc}
// */
защищенная функция defineOptions() {
родитель::defineOptions();
}
// /**
// * {@inheritdoc}
// */
общедоступная функция buildOptionsForm(&$form, FormStateInterface $form_state) {
родитель::buildOptionsForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
публичная функция рендеринга (ResultRow $values) {
$build['output']['#markup'] = 'Тест';
вернуть $сборку;
}
}
Кроме того, при добавлении поля метка и группа отображаются правильно, но как только поле появляется в представлении, оно показывает :
вместо Группа:Имя поля
Любая помощь будет принята с благодарностью.