gpt4 book ai didi

php - 分离 Drupal 模块逻辑和 UI

转载 作者:可可西里 更新时间:2023-11-01 00:52:36 26 4
gpt4 key购买 nike

我编写了一个 D6 模块,为用户提供通信、配置参数和测试 3rdparty API 服务的能力。
该模块按预期工作,但我想分离通信器类并将其捆绑为 foo 模块。然后将其余部分(管理页面)打包为 foo-ui 模块。就像 views 和 views-ui 一样。
我不知道这样做的最佳实践/设计模式是什么。有什么想法吗?

最佳答案

据我所知,没有特定的模式,但总有一个问题:

-- Why should I separate my module's logic and UI into multiple modules? Is that really needed?

It's needed, only if you have developed a module which might accept different UIs just like views and simple views. IMO there is no other reason to do so.

好的,假设我们的模块需要 _ui事物。这里我尝试把一个模块的核心功能和它的配置UI分离出来作为例子。看看Unfuddle API module ,这是一个非常小而简单的模块,适合我们的情况。这是 $ tree ./unfuddle_api :

unfuddle_api/
|-- LICENSE.txt
|-- README.txt
|-- unfuddle_api.classes.inc
|-- unfuddle_api.info
|-- unfuddle_api.install
|-- unfuddle_api.module

0 directories, 6 files

阅读它的代码! unfuddle_api.install未安装架构,但实现了 hook_uninstall()使用 variable_del() 删除一些变量在模块卸载。这些变量实际上是将在模块的管理页面中设置的 API 连接参数,您的模块中可能也有一些。
IMO 这是要迁移到 unfuddle_api_ui 的部分模块。

文件unfuddle_api.classes.incunfuddle 的 API 包装类,它以某种方式包装在一个类中的 3rdparty 代码将用于实例化一个对象。
IMO 这应该保留在核心模块中。但是为了设计,我们必须通过删除 variable_get() 来更改构造函数方法。调用和设置传递的参数直接到类属性。我们稍后会在 .module 中添加它们文件。

文件unfuddle_api.module包含主要模块代码,hook_perm() 的实现为 hook_menu() 加一创建管理页面和一个名为 unfuddle_api_create() 的辅助函数这在某种程度上是一个 FactoryUnfuddle 创建对象的助手类编码为 unfuddle_api.classes.inc .
IMO 两个钩子(Hook)实现都应该移植到 _ui模块。也删除了 variable_get() unfuddle_api.classes.inc 的一部分上面讨论过,这里应该加在unfuddle_api_create()功能

所以,作为一个大纲:我们有一个 unfuddle_api充当 Unfuddle 包装器的模块API类。它为我们提供了所有功能,但没有配置 UI。所有配置都应通过 unfuddle_api_create() 设置代码中的模块。
我们还有一个 unfuddle_api_ui依赖unfuddle_api的模块模块,如果启用,将为我们提供 UI 中的核心模块配置。

希望对您有所帮助。

关于php - 分离 Drupal 模块逻辑和 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com