Поле — таблица в Drupal

Почему клерки так любят excel? Это очевидно.  :)

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

Хочу рассказать об одном из таких модулей — tablefield.

Field Collection vs TableField

С точки зрения программиста, более правильно было бы использовать field collection, представляя каждую строку таблицы набором полей соответствующей коллекции.

Но чтобы привести внешний вид такой таблицы-коллекции в редакторе к ожидаемому пользователем виду (в виде таблички с примыкающими друг к другу полями) придется немало поработать.

В то время как TableField в редакторе и в шаблоне представляет поле в виде HTML таблицы.

Вторым неприятным аспектом работы с таблицей, реализованной как field collection, является громоздкий доступ к значением полей. Каждую строку нужно грузить как отдельный entity  объект, а каждый столбец в этой строке-объекте — это сложно структурированное поле.

TableField же загружает данные поля в виде одного двухмерного массива.

Возможности TableField

Модуль позволяет работать с полями-таблицами.

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

Плагин предоставляет редактору ряд сервисных возможностей — это импорт данных из CSV или простого текста с заданным разделителем полей.

Админ-настройки поля очевидны, чтобы останавливаться на их описании подробно. Лишь перечислю сами возможности. Можно:

  • задать дефолтовы значения в таблице, и запретить их изменение в редакторе;
  • выбрать тип ячейки — текстовое поле или область;
  • ограничить длину вводимого в каждую ячейку текста.

Работа с tablefield из программного кода

Рассмотрим структуру поля. Вот как она выглядит:

Элемент value — это сериализованое значение, которое хранится в базе данных. Tabledata — данные в виде двухмерного массива. Обратите внимание на служебное значение weight в каждой строке (row).

Программно размеры сетки можно поменять, изменив значения в rebuild, установив нужные величины count_cols и count_rows. Значения ячеек можно менять как через value, так и меняя tabledata. Но содержимое value — приоритетное для обработчика, потому, если вы хотите чтобы читались изменения из tablefield, очищайте value при сохранении поля.

Ну и шаблон итератора для работы с таблицей:

Написать комментарий

Мало букафф? Читайте есчо !

Не работает drag-n-drop для нескольких TableField полей в одной форме

Октябрь 29, 2017 г.

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

Читать

 

Комментарии к «Поле — таблица в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



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