drupal8模块开发(4)

来源:网络收集 时间:2025-06-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Drupal 8模块开发

了 ContextAwarePluginBase,ContextAwarePluginBase 使用了 StringTranslationTrait。所以$this->t()被引入到了 BlockBase 内。

创建表单

现在创建个简单的表单。不幸的是 Examples 没有包含表单的例子,我们利用它里面的 page_example模块创建下。

创建的表单包含一个 email 字段,这是 Drupal 8 新增加的表单元素。

默认 Drupal 8 会校验输入的值是否是 email 地址,代码也使用了校验函数确保输入的 email 是 .com 的。

输入错误会设置个表单错误,正确会输出一句提示信息。 下载文件

* Contains \\Drupal\\page_example\\Form\\PageExampleForm. */

namespace Drupal\\page_example\\Form;

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

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

class PageExampleForm extends FormBase {

/**

* {@inheritdoc}. */

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

/**

* {@inheritdoc}. */

public function buildForm(array $form, FormStateInterface $form_state) { $form['email'] = [ '#type' => 'email',

'#title' => $this->t('Your .com email address.') ];

$form['show'] = [ '#type' => 'submit',

'#value' => $this->t('Submit'),

16

Drupal 8模块开发

];

return $form; }

/**

* {@inheritdoc} */

public function validateForm(array &$form, FormStateInterface $form_state) { if (strpos($form_state->getValue('email'), '.com') === FALSE) {

$form_state->setErrorByName('email', $this->t('This is not a .com email address.')); } }

/**

* {@inheritdoc} */

public function submitForm(array &$form, FormStateInterface $form_state) {

drupal_set_message($this->t('Your email address is @email', ['@email' $form_state->getValue('email')])); }

=>

上面的代码和 Drupal 7 创建表单很相似,只是使用了面向对象的方式。这是因为 Drupal 8 的表单 API 除了增加新元素和作了类封装以外基本没动。

PageExampleForm中的代码由下面几件事组成:

为 PageExampleForm 类设置了名字空间,继承了核心 FormBase 类。 实现了 4 个方法,3 个和 Drupal 7 类似。

getFormId()是一个新的、必须定义的方法,只是返回表单机器名。

buildForm()也是必须定义的,它返回一个渲染数组,类似 Drupal 7 的 hook_form 。

validateForm()是可选的,进行校验,类似 Drupal 7 的hook_form_validate 。 submitForm()执行提交处理,类似 Drupal 7 的hook_form_submit。

定义路由

为了使用表单,路由是必须定义的,我们追加到之前的page_example.routing.yml文件内。

page_example_form:

path: '/examples/page_example/form' defaults:

_form: '\\Drupal\\page_example\\Form\\PageExampleForm' _title: 'Demo Form' requirements:

_permission: 'access simple page'

在 defaults 下使用 _form 替换_controller,指定目标是一个 Form 类。

清空缓存,访问http://mysite.com/examples/page_example/form,你会看到这个

17

Drupal 8模块开发

表单。

如果你熟悉 drupal_get_form(),可能会想怎样像 Drupal 7 那样加载一个表单呢?

Drupal 8 中使用全局类,你会用到 formBuilder() 方法:

$form = \\Drupal::formBuilder()->getForm('Drupal\\demo\\Form\\DemoForm'); 这个 $form 返回的是可渲染的数组。

2.3 :实验室和其他信息

总结

本课我们继续探讨了 Drupal 8 模块开发的两个新主题:区块和表单。

已经知道怎么创建区块,也学习了通过实现 FormBase 类创建简单的表单。

Drupal 8 中的区块现在是可重用的插件。 类开始要定义名字空间。

文件能够包含核心或者其他资源的类。

注释中包含了注解,用于表征类的元数据。 完整步骤

切换到 Examples 模块

创建新的模块目录 block_example 切换到 block_example 目录

创建 block_example.info.yml 文件

粘贴例子代码到 block_example.info.yml 文件 创建 src/Plugin/Block 目录 切换到 src/Plugin/Block

创建 ExampleEmptyBlock.php 文件

粘贴例子代码到 ExampleEmptyBlock.php 文件 激活模块 清空缓存

去 /admin/structure/block 查看新定义的块 添加块到某个区域,查看显示效果

18

Drupal 8模块开发

创建 ExampleConfigurableTextBlock.php 文件

粘贴例子代码到 ExampleConfigurableTextBlock.php 清空缓存 测试配置表单

在 page_example 下创建 src/Form 目录 切换到 src/Form 目录

创建 PageExampleForm.php 文件

粘贴例子代码到 PageExampleForm.php

编辑 page_example.routing.yml 文件添加路由 清空缓存

测试 http://mysite.com/examples/page_example/form 附加活动

这些额外的练习可以扩充你的知识,加深对本课概念的理解。

创建一个显示图片广告的区块

创建表单区块或页面,向表单中设置的地址发信。 利用区块插件创建自己的实体。

研究下为啥有些开发者抵制使用注解。

第三章 表单配置和管理

3.1 :配置表单和管理

本课介绍”配置表单”和”配置管理(CM)”。

19

Drupal 8模块开发

Drupal 8 把 Drupal 7 中的配置信息和函数收集起来用一个独立的系统管理。

本课…

学习 CM(配置管理)。

组装examples/configform_example模块。 学习配置表单。

探讨构建配置表单。

创建*.settings.yml,介绍使用 CM 为模块存储配置。

配置管理

Drupal 8 配置管理(CM)由配置 API驱动,为模块存储配置数据提供了一个核心位置。 这可以简化类似站点名称等静态数据或者字段定义、图片样式等复杂对象的配置。 这意味着 Drupal 8 核心有了 Drupal 7 Features模块的功能。

Drupal 8 为不同安装环境(例如开发、分期和生产)的配置变化提供了倒入、导出的用户界面。

这样就可以分开配置不同的环境。

使用Configuration inspector 模块,你可以在 Drupal 管理界面直接查看各个配置,而无须在文件系统内查看 YAML 文件。

模块开发者可以提交 {module}/config/install 目录内的 YAML 文件,定义配置设定的构成,使用版本控制软件跨多个环境进行发布。

也有一个加载配置的上下文系统,使自定义多语言站点更加容易,这个可以通过 schema 文件实现。

被 CM 替代的 Drupal 7 函数

CM 替代了 Drupal 早期使用的几个函数。核心思想是这些函数被整合到 CM 系统,统一处理配置数据。

variable_set() variable_get() variable_del() hook_update_N()

drush features-update ctools_export_object()

ctools_export_load_object() $conf[...];

配置表单

我们创建 PageExampleForm 时继承了FormBase,FormBase 是 FormInterface(提供了一个表单的接口)的一个简单实现。

20

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库drupal8模块开发(4)在线全文阅读。

drupal8模块开发(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/459228.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219