表单

admin 提交于 周三, 06/07/2023 - 15:21

表单

HTML 表单是 Web 应用的重要组件,使用起来很简单,但是要用得好并不容易。

Drupal 把表单抽象起来,在内部处理表单的常见问题,对开发者只开放简单接口,以提高开发效率。

表单的基本用法

我们先看看开发者是如何制作一个表单的。

定义表单

在模块下添加 src/Form/MyForm.php

<?php
namespace Drupal\example0403\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;

class MyForm extends FormBase {

  public function getFormId() {
    return 'my_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $form['name'] = [
      '#type' => 'textfield',
      '#title' => '名字'
    ];
    $form['submit'] = [
      '#type' => 'submit',
      '#value' => '提交'
    ];
    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    $form_values = $form_state->cleanValues()->getValues();
    // 打印表单提交结果
    foreach ($form_values as $key => $value) \Drupal::messenger()->addMessage("$key : $value");
  }
}

表单的渲染,也是使用渲染数组来实现的,在上面的 buildForm 方法中编写表单元素数组, #type => textfield#type => submit 是由 Drupal Core 提供的可以接受用户输入的 渲染元素。 它们被称为 表单元素(FormElement)Drupal Core 内建了将近 100 个渲染元素中,有 30 多个是表单元素, 可用于创建表单渲染数组。

为表单提供一个路由