欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Drupal - 模块开发

程序员文章站 2022-05-22 15:50:02
...

1、网站损坏问题

1、运行更新脚本

2、清除所有缓存
(1).后台操作界面上的清空缓存
[d8-root]/admin/config/development/performance

(2).报表->状态报告 运行cron

(3).尝试与运行 update.php 相同的方式运行 rebuild.php

(4).也可以使用 /vendor/drupal/console/bin/drupal cr  更新缓存命令

2、创建自定义模块 

 1- 准备骨架


// 在 web目录下执行  他会自动写入到 modules 目录里  
git clone https://github.com/sidharrell/D8HWexample.git modules/custom/hello_world 

// 默认下载的是完整的demo项目,如果你不需要其他文件可以进入模块目录执行
git checkout skeleton

2 - 如果你想在开发过程中显示所有错误

找到settings.php 添加


error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

 

3 - info.yml 文件内容解析


name: Hello World Module
description: Creates a page showing "Hello World"
package: 目录名

type: module
core: 8.x


dependencies:
	- drupal: link
	- drupal: views
	- paragraphs:paragraphs
	- webform:webform (>=8.x-5.x)


dependencies = 依赖项:您的模块所依赖的其他模块的列表。对Drupal core或contrib模块的依赖应以{project}:{module}的格式命名,其中{project}是出现在Drupal.org URL中的项目名(例如drupal.org/project/views), {module}是模块的机器名。依赖关系还可以包括版本限制,例如webform:webform (>=8 - x-5 - x)。注意,如果您的模块依赖于其他贡献的模块或库,则应该在模块的编写器中声明它们。json文件。如果您拥有相互依赖的本地自定义模块,您可以使用{module}:{module}(或用于子模块的{module}:{submodule})。




test_dependencies:
	- drupal:image


test_dependencies:其他模块的列表(在相同的格式作为依赖项)来运行某些自动化测试对Drupal模块的自动化测试运行器(“DrupalCI”),但不需要模块依赖关系一般(或在开发模块的依赖关系,但没有完成)。请注意,在尝试运行依赖于test_dependencies的测试之前,您需要将test_dependencies更改提交到Git存储库中—您不能只放入信息。yml更改为相同的补丁作为新的测试。作为一种替代方法,您还可以为测试依赖项使用Composer—有关更多信息,请参阅相关文档。


configure: hello_world.settings

配置:如果您的模块提供了一个配置表单,那么您可以在这里指定到这个表单的路由。当用户展开详细信息时,它将在扩展页面(在/admin/modules URL路径处)中显示为一个链接。

php: 7.3

5.6:定义模块所需的最小php版本。如果用户使用较旧的PHP版本,则无法启用该模块。如果您的模块使用了在早期PHP版本中不存在的新函数,则可以使用这一点来避免错误。

hidden: true

true:这将在扩展页面的模块列表中隐藏您的模块。如果模块只包含测试,或者用于为需要实现主模块API的开发人员提供示例,那么隐藏它可能非常有用。您可以通过为您的settings.php文件添加$settings['extension_discovery_scan_tests'] = TRUE来使这些模块可见。

required: true

required: true:这意味着您的模块必须是启用的,并且不能卸载。
限制属性,由Drupal打包系统添加。不要将这些手动添加到info。存储库中的yml。
版本
项目

4 - 介绍模块组件之间的关系

http://josephbcasey.github.io/d8-interconnections-demo/

Drupal - 模块开发

Drupal - 模块开发

5 - 添加控制器 Adding a basic controller

基类的选择

这个例子使用ControllerBase,它可以极大地减少样板依赖处理代码。然而,它也使类更难进行单元测试。因此,这个基类应该仅由仅包含普通粘合代码的控制器类使用。包含值得测试的足够复杂逻辑的控制器不应该使用这个基类,而应该使用ContainerInjectionInterface,或者最好将其重构为简单的粘合代码。

 

 

 

相关标签: x