在 Drupal 中创建一个非常简单的表单

2023-06-22php开发问题
4

本文介绍了在 Drupal 中创建一个非常简单的表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我需要做的就是有一个可以执行此操作的表单:

All I need to do is have a form that does this:

  1. 用户在文本框中输入邮政编码
  2. 提交后,用户被重定向到 mysite.com/[用户邮政编码]

就是这样!我知道验证等也是可取的,但我现在只需要让它工作.我不介意它是硬编码的还是使用 Drupal 表单 API(实际上我更喜欢前者!).

That's it! I know validation etc. would be desirable as well, but I just need to get this working for now. I don't mind if it's harcoded or utilises the Drupal form API (actually I'd prefer the former!).

我知道这很简单,但不幸的是我来自前端背景并且对这类事情有一些了解:(

I know this is dead simple, but unfortunately I'm coming from a front-end background and have a bit to learn about this sort of thing :(

干杯!

推荐答案

使用 Form API 和 自定义模块.您将使用 Form API 构建一个表单并添加一个提交处理程序,该处理程序将表单的重定向更改为您想要的任何内容.最后,您需要创建一种访问表单的方法(通过创建菜单项或通过创建块).

This is pretty easy with the Form API and a custom module. You'll build a form using the Form API and add a submit handler that changes the redirect for the form to whatever you'd like. Finally, you'll need to create a way to access the form (either by creating a menu item or by creating a block).

这是一个实现您想要的表单的示例:您需要仔细阅读表单 API 参考以查看构建表单时的所有选项.它还提供了两种访问表单的方式:

Here's an example that implements a form like you want: you'll want to peruse the Form API reference to see all the options you have when building a form. It also provides two ways to access the form:

  1. 使用 hook_menu() 提供http://example.com/test
  2. 上的表单页面
  3. 使用 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;
}

更多信息:

  • 创建模块 - 教程:Drupal 6.x
  • 表单 API 快速入门指南
  • 表单 API 参考
  • hook_menu() API 参考
  • hook_block() API 参考
  • Drupal 6 中的 hook_block 示例
  • Creating modules - a tutorial: Drupal 6.x
  • Form API Quickstart Guide
  • Form API Reference
  • hook_menu() API reference
  • hook_block() API reference
  • Example of hook_block in Drupal 6

这篇关于在 Drupal 中创建一个非常简单的表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17