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/
5 - 添加控制器 Adding a basic controller
基类的选择
这个例子使用ControllerBase,它可以极大地减少样板依赖处理代码。然而,它也使类更难进行单元测试。因此,这个基类应该仅由仅包含普通粘合代码的控制器类使用。包含值得测试的足够复杂逻辑的控制器不应该使用这个基类,而应该使用ContainerInjectionInterface,或者最好将其重构为简单的粘合代码。
上一篇: matlab制作圆摆线动画