use Drupal\Core\Form\Formbase 应该是 use Drupal\Core\Form\FormBase,注意 FormBase 的 Base 的第一个字母是大写的。
在 Drupal 8 里面创建一个表单,可以为它创建一个类 .. 在这个表单类里面包含了表单的创建,提交,验证等等。 Drupal 8 提供了几种基本的类我们可以去继承一下。
找到我们自己创建的这个模块 .. 我这里就是 modules 下面的 ninghao_demo .. 在它的 src 目录的下面,创建一个新的目录,名字是 Form .. 然后在它下面再创建一个表单类 .. 这个文件的名字可以是 NinghaoDemoForm.php ..
添加一个 php 的开始标记 .. 再设置一下这个类的命名空间 .. 用一个 namespace .. 这里设置成 Drupal\ninghao_demo\Form; .. 在我们自己的表单类里面需要用到核心带的表单相关的类,我们可以先使用一下它,这样在用到它的时候可以使用使用类的名字 .. use Drupal\Core\Form\Formbase; 这个 Formbase 是一种基本的表单 .. 在我们的类里面可以去继承一下它 ..
然后再用一下 Drupal\Core\Form\FormStateInterface;
下面再去定义一个类 .. 名字是 NinghaoDemoForm .. 注意这个类的名字要跟它所在的这个 php 文件的名字一致 .. 让它继承一下 Formbase ..
在我们的类里面必须要包含几个方法 .. 一个是 getFormID .. 这个方法需要返回表单的 id .. 比如我们可以把这个表单的 id 设置成 ninghao_demo_form ..
然后再定义一个 buildForm 这个方法 .. 它里面的东西就是表单上面包含的一些元素 .. 这个方法有两个参数 .. 一个是 $form ,它是一个数组 .. 还有一个是 $form_state .. 它属于 FormStateInterface 这个类 ..
验证表单的功能可以放在 validateForm 这个方法里面 .. 添加一个这样的方法 .. 它也包含两个参数 .. 一个是用引用的方式传递进来的 $form .. 它是一个数组 .. 还有就是 $form_state .. 它属于 FormStateInterface ..
最后再添加一个处理表单提交的方法 .. 名字是 submitForm .. 同样包含用引用方式传递的 $form,还有 $form_state 这个参数 ..
现在我们就定义好了一个基本的表单类 .. 下面我们再去给它添加几个表单元素 ...