В этой статье мы рассмотрим, как создать форму в системе управления контентом Drupal 7 и сохранить введенные данные в административной панели сайта. Мы также рассмотрим несколько смежных вопросов, чтобы расширить ваше понимание темы.

Шаг 1: Создание формы

Первым шагом является создание формы в Drupal 7. Для этого мы будем использовать модуль Form API, который облегчает создание форм и обработку их данных. Создадим новый модуль mymodule и создадим файл mymodule.info в корневой папке модуля с следующим содержимым:

; mymodule.info
name = My Module
description = Example module for creating forms in Drupal 7
core = 7.x
package = Custom
dependencies[] = system

Далее создадим файл mymodule.module в корневой папке модуля и добавим следующий код для создания формы:

; mymodule.module
function mymodule_menu() {
  $items['mymodule/form'] = array(
    'title' => 'My Form',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymodule_form'),
    'access arguments' => array('access content'),
  );
  
  return $items;
}

function mymodule_form($form, &$form_state) {
  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => 'Name',
    '#required' => true,
  );
  
  $form['email'] = array(
    '#type' => 'textfield',
    '#title' => 'Email',
    '#required' => true,
  );
  
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
  );
  
  return $form;
}

function mymodule_form_submit($form, &$form_state) {
  // Сохранение данных в административной панели
  $values = $form_state['values'];
  
  // Пример сохранения данных в базе данных
  db_insert('mymodule_data')
    ->fields(array(
      'name' => $values['name'],
      'email' => $values['email'],
    ))
    ->execute();
    
  drupal_set_message('Form submitted successfully!');
}

Шаг 2: Отображение формы

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

; mymodule.module
function mymodule_menu() {
  $items['mymodule/form'] = array(
    'title' => 'My Form',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymodule_form'),
    'access arguments' => array('access content'),
  );
  
  return $items;
}

Теперь вы можете увидеть ссылку на вашу форму My Form в основном меню сайта.

Шаг 3: Обработка данных формы

При отправке формы данные будут сохранены в административной панели. В функции mymodule_form_submit() мы используем функцию drupal_set_message() для отображения сообщения о успешной отправке формы. В случае с сохранением данных в базе данных мы используем функцию db_insert().

Дополнительные вопросы:

1. Как добавить дополнительные поля в форму?

Чтобы добавить дополнительные поля в форму, вы можете использовать различные объекты формы Form API, такие как ‘#type’ => ‘textfield’ для текстового поля или ‘#type’ => ‘select’ для выпадающего списка. Просто добавьте новый элемент в функцию mymodule_form(). Например:

$form['phone'] = array(
  '#type' => 'textfield',
  '#title' => 'Phone',
  '#required' => true,
);

2. Как указать пользовательский шаблон для формы?

Чтобы указать пользовательский шаблон для формы, вы можете создать файл с именем mymodule-form.tpl.php в папке вашей темы и добавить нужную разметку. Затем вы можете использовать функцию theme() в функции mymodule_form() для указания шаблона. Например:

$form['#theme'] = 'mymodule_form';
return $form;

3. Как проверить и фильтровать введенные данные перед сохранением?

Вы можете использовать функцию hook_form_validate() для проверки и фильтрации введенных данных перед их сохранением. В этой функции вы можете использовать функции, такие как filter_var() или preg_match() для проверки данных на соответствие определенным шаблонам. Например:

function mymodule_form_validate($form, &$form_state) {
  $email = $form_state['values']['email'];
  
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    form_set_error('email', 'Invalid email address');
  }
}

В этой статье мы рассмотрели, как создать форму в Drupal 7 с сохранением данных в административной панели. Мы представили примеры программного кода для создания и обработки формы, а также ответили на дополнительные вопросы, чтобы помочь вам лучше понять тему. Надеюсь, эта статья была полезной и помогла вам успешно создать форму в Drupal 7!