Создайте ОЧЕНЬ простую форму в Drupal - PullRequest
4 голосов
/ 16 августа 2010

Все, что мне нужно сделать, это иметь форму, которая делает это:

  1. Пользователь вводит почтовый индекс в текстовое поле
  2. После отправки пользователь перенаправляется на почтовый индекс mysite.com/[user]

Вот и все!Я знаю, что проверка и т. Д. Также были бы желательны, но мне просто нужно, чтобы это работало сейчас.Я не возражаю, если он зашит или использует API формы Drupal (на самом деле я бы предпочел первый!).

Я знаю, что это очень просто, но, к сожалению, я из внешнего интерфейса.и немного узнать об этом: (

Ура!

Ответы [ 3 ]

4 голосов
/ 16 августа 2010

Это довольно просто с Form API и пользовательским модулем . Вы создадите форму с использованием API формы и добавите обработчик отправки, который изменяет перенаправление формы на любое другое. Наконец, вам нужно создать способ доступа к форме (либо путем создания пункта меню, либо путем создания блока).

Вот пример, который реализует форму, как вы хотите: вы захотите просмотреть ссылку API формы, чтобы увидеть все параметры, которые есть у вас при создании формы. Он также предоставляет два способа доступа к форме:

  1. Использование hook_menu() для предоставления страницы для формы на http://example.com/test
  2. Использование hook_block() для предоставления блока, содержащего форму, которую вы можете добавлять и перемещать на странице администрирования блока.

Пример кода:

// Form builder. Form ID = function name
function test_form($form_state) {

  $form['postcode'] = array(
    '#type' => 'textfield',
    '#title' => t('Postcode'),
    '#size' => 10,
    '#required' => TRUE,
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Go'),
  );

  return $form;
}

// Form submit handler. Default handler is formid_submit()
function test_form_submit($form, &$form_state) {
  // Redirect the user to http://example.com/test/<Postcode> upon submit
  $form_state['redirect'] = 'test/' . check_plain($form_state['values']['postcode']);
}

// Implementation of hook_menu(): used to create a page for the form
function test_menu() {

  // Create a menu item for http://example.com/test that displays the form
  $items['test'] = array(
    'title' => 'Postcode form',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('test_form'),
    'access arguments' => array('access content'),
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

// Implementation of hook_block(): used to create a movable block for the form
function test_block($op = 'list', $delta = 0, $edit = array()) {
  switch ($op) {
    case 'list': // Show block info on Site Building -> Blocks
      $block['postcode']['info'] = t('Postcode form');
      break;
    case 'view':
      switch ($delta) {
        case 'postcode':
          $block['subject'] = t('Postcode');
          $block['content'] = drupal_get_form('test_form');
          break;
      }
      break;
  }

  return $block;
}

Подробнее:

2 голосов
/ 16 августа 2010

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

2 голосов
/ 16 августа 2010

Создание форм в Drupal довольно легко, когда вы освоите его.Я бы порекомендовал прочитать следующую ссылку.http://drupal.org/node/751826 Это дает хороший обзор того, как создать форму.

В ловушке _submit вы можете затем перенаправить на соответствующую страницу, установив $form_state['redirect'].

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...