azahraoui / dolicore
DoliCore 基于 Dolibarr 的 dolibase 插件
Requires
- php: >=8.1
This package is auto-updated.
Last update: 2024-09-19 03:12:31 UTC
README
Dolibase 是一组可重用的代码和架构,它使得编写 Dolibarr 模块更加快速和简单。
⚠️ 此项目已不再积极开发,您可以随意分支使用,或尝试使用 DAMB 作为替代。
为什么要使用它?
- 模块构建器:Dolibase 有自己的模块构建器,您可以使用它来加速开发。
- 易于安装:使用 Dolibase 安装程序 模块一键安装。
- 现成组件:提供多种组件,如页面、PDF 模型、类和函数。
- 确保向后兼容性:您的模块(s)即使在旧版本的 Dolibarr 上也能正常工作(从版本 3.8 开始)。
- 更少且更简洁的代码:以简洁的方式编写更少的代码,并减少重复代码的频率。
它是如何工作的?
Dolibase 跟随 Dolibarr 的主要设计模式,并作了一些小的调整以适应其需求。
以下是一个简单的图表,展示了基本 Dolibarr 模块与 Dolibase 模块之间的目录结构差异。
dolibase module dolibarr module ├── admin ├── admin │ ├── setup.php │ └── setup.php + │ └── about.php ├── core ├── core │ ├── modules │ ├── modules │ │ └── modMyModule.class.php │ │ └── modMyModule.class.php │ ├── boxes │ ├── boxes │ │ └── mywidget.php │ │ └── mywidget.php │ └── triggers │ └── triggers │ └── interface_**_modMyModule_*.class.php │ └── interface_**_modMyModule_*.class.php ├── class ├── class │ └── *.class.php │ └── *.class.php ├── img + ├── dolibase │ └── object_mypicture.png ├── img ├── langs │ └── object_mypicture.png │ ├── en_US ├── langs │ │ └── mymodule.lang │ ├── en_US │ └── **_** │ │ └── mymodule.lang │ └── mymodule.lang │ └── **_** ├── sql │ └── mymodule.lang │ ├── *.sql ├── sql │ └── *.key.sql │ ├── *.sql ├── css │ └── *.key.sql │ └── *.css ├── css ├── js │ └── *.css │ └── *.js ├── js ├── tpl │ └── *.js │ └── *.tpl.php ├── tpl └── myfirstpage.php │ └── *.tpl.php ├── myfirstpage.php + ├── config.php (mandatory) + └── autoload.php (mandatory)
说明
admin/setup.php
和admin/about.php
包含模块设置和作者信息(它们只能由管理员咨询)。core/modules/modMyModule.class.php
是模块的主要配置文件或类,它包含有关模块的所有信息:名称、描述、菜单、用户权限等。在 Dolibase 中,这略有不同,模块的主要配置在config.php
文件中设置,以便在模块的其他部分重用它。core/boxes/mywidget.php
是可以在 Dolibarr 仪表板中显示的模块小部件。core/triggers
包含允许在 Dolibarr 事件后执行自定义代码的触发文件。class
文件夹可能包含您的对象类和函数、SQL 查询等。如果您熟悉 MVC 架构,它类似于模型(s)容器。dolibase
文件夹包含 Dolibase 的所有代码和逻辑。img
是图片文件夹(请注意,模块的图片应以object_
前缀开始)。langs
文件夹包含与您的模块相关的所有翻译。sql
文件夹包含用于创建或更新模块表的结构化查询语言(SQL)文件。css
文件夹应包含您的 CSS 文件。js
文件夹用于您的 JavaScript 文件。myfirstpage.php
在上面的示例中被认为是第一个模块页面。config.php
是 Dolibase 使用的配置文件,它包含模块的主要配置 @see config.default.php。autoload.php
负责加载模块配置、Dolibarr 环境和 Dolibase 要求。您甚至可以在其中添加任何希望自动加载的 PHP 文件 @see autoload.default.php。
安装
Dolibase 可以以两种不同的方式工作
- 全局(推荐):这意味着 Dolibase 只需要在 Dolibarr 的根目录中安装一次,然后所有 Dolibase 模块都将使用全局版本。
- 内部:每个模块可以有自己的 dolibase 版本(位于模块文件夹内),因此这种方法不需要预先安装,但使用旧版 dolibase 的模块与新版本之间可能会出现一些冲突。
因此,要全局安装 dolibase,只需将其解压到您的 dolibarr 根目录内,或者使用 Dolibase 安装器模块。
快速开始
从版本 2.4.0 开始,您可以使用 Dolibase Builder 轻松生成您的模块和小部件。
要创建一个新模块,只需访问 dolibase builder 页面并遵循说明
https:///dolibarr/htdocs/dolibase/builder
注意,localhost/dolibarr
可能会根据您的 dolibarr 安装和域名而变化。
观看这个 演示视频 以获得快速示例。
示例
- 模块类
<?php // Load Dolibase dol_include_once('mymodule/autoload.php'); // Load Dolibase Module class dolibase_include_once('core/class/BaseModule.php'); class modMyModule extends DolibaseModule { public function loadSettings() { // Add constant(s) $this->addConstant('MY_MODULE_CONST', 'test'); // Add widget(s) $this->addWidget('mywidget.php'); // Add CSS & JS files $this->addCssFile('mycss.css') ->addJsFile('myjs.js'); // Set user permission(s) $this->addPermission('read', 'Read permission', 'r'); // Add menu(s) $this->addTopMenu($this->config['other']['top_menu_name'], 'MyTopMenu', '/mymodule/index.php?test=1') ->addLeftMenu($this->config['other']['top_menu_name'], 'myleftmenu', 'MyLeftMenu', '/mymodule/index.php?test=2') ->addLeftSubMenu($this->config['other']['top_menu_name'], 'myleftmenu', 'mysubleftmenu', 'MySubLeftMenu', '/mymodule/index.php?test=3'); } }
- 模块页面
<?php // Load Dolibase include_once 'autoload.php'; // Load Dolibase Page class dolibase_include_once('core/class/page.php'); // Create Page using Dolibase $page = new Page('My Page Title', '$user->rights->mymodule->read'); // set page title & control user access // Print page header & dolibarr's main menus $page->begin(); echo 'Hello world!'; // Print page footer $page->end();
- 小部件类
<?php // Load Dolibase dol_include_once('mymodule/autoload.php'); // Load Dolibase Widget class dolibase_include_once('core/class/widget.php'); // Load Dolibase QueryBuilder class dolibase_include_once('core/class/query_builder.php'); class MyWidget extends Widget { /** * @var Widget Label */ public $boxlabel = 'MyWidget'; /** * @var Widget Picture */ public $boximg = 'mywidget.png'; /** * @var Widget Position */ public $position = 1; /** * @var Widget is Enabled */ public $enabled = 1; /** * Load data into info_box_contents array to show array later. Called by Dolibarr before displaying the box. * * @param int $max Maximum number of records to load * @return void */ public function loadBox($max = 5) { // Set title $this->setTitle('Users List'); // Get users login, firstname & lastname from database $qb = QueryBuilder::getInstance() ->select('login, firstname, lastname') ->from('user') ->orderBy('rowid', 'ASC') ->limit($max); // Show users foreach ($qb->result() as $row) { $this->addContent($row->login) ->addContent($row->firstname) ->addContent($row->lastname) ->newLine(); } } }
🎉 简单吧?!
在 test 文件夹中找到更多模块示例。
高级功能
使用 dolibase 和 debugbar 模块,您可以获得许多好处
- 轻松调试您的模块.
要将消息添加到调试栏,只需调用 dolibase_debug
函数
dolibase_debug('your message');
- 访问 dolibarr 配置变量和常量.
- 获取所有执行的查询 ~ 即使在页面重定向后。
要保存页面重定向的查询,请使用 dolibase_redirect
函数
dolibase_redirect('page.php');
- 优化模块的加载和响应时间.
要开始计时,请调用 start_time_measure
函数,然后提供测量名称和标签
start_time_measure('measure_1', 'Label');
要停止计时,请使用 stop_time_measure
函数并传递您的测量名称作为参数
stop_time_measure('measure_1');
- 立即检查 dolibarr 日志(应启用日志模块)。
文档
在查阅 文档 之前,您必须了解 dolibarr 的工作原理以及如何开发模块,否则请参阅以下链接
- Dolibarr 文档.
- 开发者文档.
- 模块开发.
变更日志
查看 变更日志。
贡献
遵循 贡献指南。
许可证
Dolibase 根据 MIT 许可证授权。
支持我
在我的 Dolistore 模块收藏中查看。