Drupal - 模块开发

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,或者最好将其重构为简单的粘合代码。

 

6 - 设置路由文件  .routing.yml

hello.content:  名字而已 意义不大,准守规范和方法一样就行
  path:  '/hello'  路由
  defaults:
    _controller:  'Drupal\hello_world\Controller\HelloController::content'  请求的方法
    _title:  'Hello World'  标题 一个变量
  requirements:
    _permission:  'access content'

7 - 清空缓存后 访问 路由就能访问到你打印的数据

 

 

8 - 添加菜单链接

(1)在模块的根文件夹中,创建一个名为的新文件,并在其中添加以下内容:.links.menu.yml

hello_world.admin:  类似 routing的开头,起一个唯一的 有意义的名字


  title: 'Hello module settings'  标题和描述前台可见
  description: 'example of how to make an admin settings page link'标题和描述前台可见
  parent: system.admin_config_development  要显示在哪个区块下
  route_name: hello_world.content   路由的名字  routing.yml 那个有意义的名字,不是路由哈
  weight: 100 

system.admin_config_development

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值