Создайте ОЧЕНЬ простую форму в Drupal
Все, что мне нужно сделать, это создать форму, которая делает это:
- Пользователь вводит почтовый индекс в текстовое поле
- После отправки пользователь перенаправляется на mysite.com /[почтовый индекс пользователя]
Вот и все! Я знаю, что такое проверка и т. Д. было бы также желательно, но мне просто нужно, чтобы это работало сейчас. Я не возражаю, если он закодирован или использует API формы Drupal (на самом деле я бы предпочел первое!).
Я знаю, что это очень просто, но, к сожалению, я исхожу из предыстории и вам нужно немного узнать о таких вещах:(
Ура!
3 answers
Это довольно просто с помощью API формы и пользовательского модуля . Вы создадите форму с помощью API формы и добавите обработчик отправки, который изменит перенаправление для формы на то, что вы хотите. Наконец, вам нужно будет создать способ доступа к форме (либо создав пункт меню, либо создав блок).
Вот пример, в котором реализована форма, как вы хотите: вы захотите просмотреть ссылку на API формы, чтобы увидеть все параметры, которые у вас есть при создании форма. Он также предоставляет два способа доступа к форме:
- Использование
hook_menu()
чтобы предоставить страницу для формы по адресуhttp://example.com/test
- Использование
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;
}
Дополнительная информация:
API-интерфейс Drupal Form очень прост, и это то, что вам в конечном итоге нужно изучить как разработчику. С таким же успехом можно вмешаться и сделать это через API, так как это не слишком сложно, то, что вы пытаетесь сделать.
Создание форм в Drupal довольно просто, как только вы освоитесь с этим. Я бы рекомендовал прочитать следующую ссылку. http://drupal.org/node/751826 Это дает хороший обзор того, как создать форму.
В крючке _submit вы можете перенаправить на соответствующую страницу, установив $form_state['redirect']
.
Это, конечно, при условии, что у вас уже есть навыки создания пользовательских модулей. Если вам нужна дополнительная информация об этом, перейдите сюда.