Рейтинг:0

Как добавить флажок с помощью hook_field_widget_WIDGET_TYPE_form_alter()

флаг gb

Запуск Drupal 9 с установленным модулем абзацев, сворачиваемыми абзацами и аккордеоном абзацев jquery ui. Я хочу изменить форму абзацев, особенно там, где она отображает личные файлы, добавив флажок «Переключиться на общедоступный» под описанием каждого файла (см. Прикрепленное изображение).

Я использую hook_field_widget_WIDGET_TYPE_form_alter(). Вот пример кода:

**
 * Реализует hook_field_widget_WIDGET_TYPE_form_alter().
 */

 функция sbn_field_widget_paragraphs_form_alter(&$элемент, &$form_state, $контекст) {
     if (!empty($element['subform']['field_private_files'])) {
         
# $element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = [
# '#type' => 'флажок',
# '#title' => t('Переключиться на общедоступный'),
# '#required' => ЛОЖЬ,
# '#default_value' => ЛОЖЬ,
# ];

     $element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = array(
        '#type' => 'флажок',
        '#title' => t('Переключиться на общедоступный'),
        '#размер' => 10,
        '#maxlength' => 255,
        '#значение_по_умолчанию' => 1,
        '#required' => ЛОЖЬ,
        '#описание' => '<p>' . t('Переключиться с приватного на общедоступный.') . '</p>',
    );
 
        // dsm($element);
     }
}

Я знаю, что элементы массива есть, потому что я использовал dsm для распечатки всей формы, если существует ['subform']['field_private_files']:

   [field_private_files] => Массив
        (
            [#type] => контейнер
            [#parents] => Массив
                (
                    [0] => поле_тело1
                    [1] => 7
                    [2] => подчиненная форма
                    [3] => field_body2
                    [4] => 0
                    [5] => подчиненная форма
                    [6] => field_private_files_wrapper
                )

            [#атрибуты] => Массив
                (
                    [класс] => Массив
                        (
                            [0] => поле--тип-файл
                            [1] => field--name-field-private-files
                            [2] => field--widget-file-generic
                            [3] => содержание абзацев
                        )

                )

            [виджет] => Массив
                (
                    [0] => Массив
                        (
                            [#title] => Личные файлы
                            [#описание] => 
                            [#field_parents] => Массив
                                (
                                    [0] => поле_тело1
                                    [1] => 7
                                    [2] => подчиненная форма
                                    [3] => field_body2
                                    [4] => 0
                                    [5] => подчиненная форма
                                )

                            [#обязательно] => 
                            [#дельта] => 0
                            [#вес] => 0
                            [#type] => управляемый_файл
                            [#upload_location] => личное://
                            [#upload_validators] => Массив
                                (
                                    [file_validate_size] => Массив (1)
                                    [file_validate_extensions] => Массив (1)
                                )

                            [#value_callback] => Массив
                                (
                                    [0] => Drupal\файл\плагин\поле\виджет поля\виджет файла
                                    [1] => значение
                                )

                            [#процесс] => Массив
                                (
                                    [0] => Массив(2)
                                    [1] => Массив(2)
                                )

                            [#progress_indicator] => пульсирующий
                            [#расширенный] => 1
                            [#field_name] => field_private_files
                            [#entity_type] => абзац
                            [#display_field] => 1
                            [#display_default] => 1
                            [#description_field] => 1
                            [#мощность] => -1
                            [#default_value] => Массив
                                (
                                    [целевой_id] => 436
                                    [отображение] => 1
                                    [описание] => Протокол исполнительной сессии 11-15-21
                                    [fids] => Массив(1)
                                )

Любые предложения о том, как закодировать это, чтобы флажок печатался под «описанием» каждого раздела «Частные файлы» каждого абзаца (к каждому узлу может быть несколько абзацев). Спасибо!

sonfd avatar
флаг in
Это должно быть сделано с помощью виджета поля для поля личных файлов, а не через форму абзаца.
SomebodySysop avatar
флаг gb
Можете привести пример того, что вы имеете в виду? Мне потребовалась целая вечность, чтобы понять, как использовать крючок с абзацами! Не так много документации о том, как использовать там.
sonfd avatar
флаг in
https://www.drupal.org/docs/creating-custom-modules/creating-custom-field-types-widgets-and-formatters/create-a-custom-field-widget

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.