pavel makhrinsky.field api.drupalcamp kyiv 2011

Post on 14-Dec-2014

1.598 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Field APIэто не страшно

Gold Sponsor ofDrupalCamp Kyiv 2011

Silver Sponsors ofDrupalCamp Kyiv 2011

Что такое Field API?

Наследник модуля CCK Серьезно переработанный модуль CCK Механизмы хранения ввода и отображения

полей в Drupal 7

Организация работы с данным в Drupal 7

Entities Field Types Field Instances Bundles Widgets Formatters

Сущности

Базовый механизм хранения информации в D7

Это не ноды

Типы полей

Механизмы хранения и проверки Функции ввода данных Функции отображения данных

Сходны с типами в языках программирования

Поля (Field Instances)

Экземпляр поля Хранит реальные данные Связан с конкретной сущностью

Bundle

С точки зрения системы: набор полей присоединенных к какой-то сущности

С точки зрения пользователя: сущность с полями

Виджеты

Функции проверки данных Формы ввода данных

Форматтеры

Темизация вывода информации для полей

Field API

Field Types API Field Info API Field CRUD API Field Storage API Field API bulk data deletion Field Language API

Field Types API

Схема Информация Загрузка Хранение Виджеты Форматтеры

Field Info API

Предоставление информации для других модулей о полях, виджетах и т.п.

Field CRUD API

Расширенный набор функций для Создания Удаления Очистки Обновления

полей, виджетов и т.п.

Field Attach API

Используется для связки сущностей и полей Выполняется перед функциями Field Storage

API и Field Type API

Field Storage API

Позволяет реализовывать собственные механизмы хранения полей

Базовый механизм в Drupal field_sql_storage.module

Field API bulk data deletion

field_attach_delete()– hook_field_delete()

– hook_field_storage_delete()

– hook_field_attach_delete() Поля и данные не удаляются сразу

Field Language API

Поля имеют поддержку многоязычности “из коробки”

Для непереводимых добавлен язык LANGUAGE_NONE

Use cases

Widget

Необходимые хуки

hook_field_widget_form()

hook_field_widget_info()

hook_field_is_empty()

#process, #value_callback, #element_validate

$field = field_widget_field($element, $form_state);

$instance = field_widget_instance($element, $form_state);

Форматтер

Необходимые хуки

hook_field_formatter_info()

hook_field_formatter_view()

hook_field_formatter_prepare_view()

Собственная обработка многоязычности

hook_field_prepare_translation()

Собственные поля

Типичное решение

Используем тип контента Добавляем поля Используем механизмы CCK для хранения и

обработки В шаблоне/препроцесс функциях

обрабатываем вывод

Возможные усложнения задачи

Форму мы делаем руками У нас не одна форма, а несколько У нас нужно ввести несколько фамилий на

одной форме

Field API/Drupal way

Смотрим на Drupal.org Создаем свой тип поля Делаем свой форматтер Делаем свой виджет Контрибутим на d.org или складываем в

копилочку

Завершение

Field API это не только создание собственных полей

Будьте ленивы

Что получаем взамен

Поддерживаемость Расширяемость Облегчение работы Славу у уважение собратьев-разработчиков

Полезные ссылки

api.drupal.org

Вопросы к докладчику

Павел

Махринский

Skype: gumanista

Facebook: facebook.com/gumanist

top related