Разбираем формы в Drupal, Devel Dump

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

Филип Фортес

При разработке и темизации для Drupal часто возникает необходимость изменить стандартные или кастомные формы, как сделать этот процесс проще? Для этого нам потребуется модуль Devel.

Devel

Очень полезный модуль, позволяющий значительно упростить процесс разработки и темизации для Drupal.

Ссылка на модуль.

Настройка

Страница настройки модуля Devel находится по адресу your-site.ru/admin/config/development/devel, перейдя на страницу настроек убедитесь, что “Variables Dumper” установлен “По умолчанию” и “Wrap debug in <pre> tags” отмечен.

Снимок экрана

Использование dump()

Использовать отладчик dump() очень просто как в модулях так и в темах, для этого достаточно в коде прописать dump(variable), где variable - название анализируемой переменной.

Давайте рассмотрим конкретный пример, для этого я буду использовать стандартную форму обратной связи your-site.ru/contact

Открываем на редактирование файл темы your-theme.theme и добавляем перехватчик для формы hook_form_contact_message_feedback_form_alter()

<?php

/**
 * Implements hook_form_contact_message_feedback_form_alter().
 */
function your_theme_form_contact_message_feedback_form_alter(&$form, $form_state) {
  dump($form);
}

?>

Очистив кэш сайта и перейдя на страницу формы your-site.ru/contact мы увидим результат dump()

Снимок экрана

Теперь можно разобрать все данные формы и изменить или удалить нужные данные, например я хочу убрать все label и добавить placeholder’ы к полям формы, а также удалить кнопку предпросмотра и добавить HTML код к форме. Вот пример реализации:

<?php

/**
 * Implements hook_form_contact_message_feedback_form_alter().
 */
function your_theme_form_contact_message_feedback_form_alter(&$form, $form_state) {
  unset($form['actions']['preview']); // удаляем кнопку "Предпросмотр"
  unset($form['name']['#title']); // удаляем label у поля Имя
  unset($form['mail']['#title']); // удаляем label у поля Email
  unset($form['subject']['widget'][0]['value']['#title']); // удаляем label у поля Тема
  unset($form['message']['widget'][0]['value']['#title']); // удаляем label у поля Сообщение
  $form['header']['#markup'] = "<h2>" . t('Contact Form') . "</h2>"; // добавляем h2 заголовок к форме
  $form['header']['#weight'] = -100; // сдвигаем заголовок в самый верх формы
  $form['name']['#attributes']['placeholder'] = t('Your Name'); // добавляем placeholder к полю Имя
  $form['mail']['#attributes']['placeholder']= t('Your Email'); // добавляем placeholder к полю Email
  $form['subject']['widget'][0]['value']['#attributes']['placeholder']= t('Theme'); // добавляем placeholder к полю Тема
  $form['message']['widget'][0]['value']['#attributes']['placeholder']= t('Message'); // добавляем placeholder к полю Сообщение
}

?>

Вот результат

Снимок экрана

Как видите использование dump() позволяет легко разобрать любую форму или массив данных, понять назначение переменных и манипулировать ими.

Если у Вас появились вопросы, не стесняйтесь пишите мне!
Оставьте Ваш комментарий