Drupal 8: Как настроить виджет формы для отображения значения поля сущности вместо заголовка сущности?



Я делаю свои первые шаги в понимании того, как Drupal 8 работает под капотом, разрабатывая пользовательский модуль виджетов форм. Моя цель-показать значение поля изображения узла, на который ссылается ссылка, вместо названия узла в списке переключателей (доступно в core). Это позволит администраторам веб-сайта выбрать картинку вместо текста при выборе фонового изображения для узла.



Вот как выглядит моя форма без пользовательской работы, используя встроенные в Drupal 8 " флажки / переключатели" виджет:



Встроенный в Drupal 8 виджет "флажки/переключатели" пример



Вот макет Photoshop того, как я хочу, чтобы мой пользовательский виджет появился (по крайней мере, для начала):



Photoshop макет того, как я хочу, чтобы мой пользовательский виджет появился



До сих пор мне удалось создать стартовый модуль, который расширяет виджет "флажки/переключатели", ссылаясь на примеры для разработчиков модуля и обхода ядра. Это, по крайней мере, помогло мне понять структуру модулей Drupal 8 немного лучше.



Модуль структура:



modules
custom
back_image_widget
back_image_widget.info.yml
back_image_widget.module
src
Plugin
Field
Field Widget
BackImageWidget.php


Back_image_widget. info. yml:



name: Background Image Entity Widget
type: module
description: Used to list Background Image entities as images instead of text labels in the Text Message content type form.
package: Custom
core: 8.x


Back_image_widget.модуль:



<?php

/**
* @file
* Used to list Background Image entities as images instead of text labels in the Text Message content type form.
*/


BackImageWidget.php:



<?php

/**
* @file
* Contains Drupalback_image_widgetPluginFieldFieldWidget.
*/

namespace Drupalback_image_widgetPluginFieldFieldWidget;

use DrupalCoreFieldFieldItemListInterface;
use DrupalCoreFieldWidgetBase;
use DrupalCoreFieldPluginFieldFieldWidgetOptionsButtonsWidget;
use DrupalCoreFormFormStateInterface;

/**
* Plugin implementation of the 'field_back_image' widget.
*
* @FieldWidget(
* id = "field_back_image",
* module = "back_image_widget",
* label = @Translation("Background Image Entity"),
* field_types = {
* "entity_reference"
* },
* multiple_values = FALSE
* )
*/
class BackImageWidget extends OptionsButtonsWidget {

//Here we go!

}


С этим я могу установить модуль, выбрать новый виджет и иметь все ожидаемые функциональные возможности, которые ядро предлагает для запуска.



Отсюда у меня возникают проблемы с определением лучших фрагментов из родительских классов для изменения, чтобы я мог заменить заголовки другими значениями сущностей. Наиболее полезные функции, по-видимому, защищены. То результирующие параметры возвращают защищенные заголовки (без другой доступной информации, такой как идентификаторы узлов для воспроизведения). Нужно ли мне унаследовать прадедушку и начать все заново? Я предполагаю, что мне нужно будет продолжить изучение инъекций зависимости? Есть мысли о том, как действовать в целом или в деталях? Я гибок с ответами, пока это помогает мне преодолеть эту тупиковую точку.

837   1  

1 ответ:

Вам не нужно создавать пользовательский виджет.

Отредактируйте свое поле и установите " ссылочный метод" из " default" в " представления: фильтр по представлению ссылки на сущность". Затем он сообщит вам следующее (если еще не определены представления ссылок на сущности):

Приемлемых мнений найдено не было. Создание представления со ссылкой на сущность отображение или добавление такого отображения в существующее представление.

Итак, вы идете вперед и создаете эту сущность справочный вид (/admin / structure/views), вернитесь к своему полю и выберите его снова, теперь вы должны иметь возможность выбрать вид и вуаля.

При создании представления ссылки на сущность можно определить, какие поля сущности будут отображаться (вместо заголовка сущности или в дополнение к нему - что именно требуется). Так что на самом деле вам не нужно писать код для этой функциональности, это все конфигурация.

Редактировать:

Как выяснил Аскер, это не работает из коробки. Я нашел модуль, который включает желаемую функциональность (виджет формы для представления ссылки на сущность):

Https://www.drupal.org/project/entity_reference_views_select

Этот модуль, по-видимому, только для включения виджета select and checkbox для представления ссылки на сущность.

Если требуется более сложная конфигурация, обозреватель сущностей: https://www.drupal.org/project/entity_browser также находится в тяжелом развитии, так как это кажется. (оба непроверенные мною)

Comments

    Ничего не найдено.