# 插件机制

# 原理说明

BeikeShop插件充分利用 Laravel 框架 ServiceProvider 发现以及引导机制, 将系统各个插件注册到系统。 包括插件的 Migrations, Routes, Views, Lang, 以及启动文件 Bootstrap.php。

插件PHP代码需要遵循 PSR4自动加载规范

简单来说,目录名和类名需要采用首字母大写驼峰也就是Studly原则, 如图所示

img.png

# 目录说明

一个典型的插件目录如下

  • Controllers
  • Lang
  • Middleware
  • Migrations
  • Models
  • Repositories
  • Routes
  • Static
  • Views
  • Bootstrap.php
  • columns.php
  • config.json
目录名称 说明
Controllers 控制器目录,前台和后台控制器都放到此目录,可以有子目录,只要符合 PSR4 规范即可
Lang 语言包目录,子目录的名字需要和 /resources/lang 目录下保持一致
Middleware 中间件目录,子目录 /Shop 存放前台中间件, 子目录 /Admin 存放后台中间件, 系统会自动加载
Migrations 数据库迁移目录,可参考 https://laravel.com/docs/9.x/migrations
Models 模型目录,插件模型,定义模型数据表以及表间关系
Repositories 数据仓库目录,DB存取相关类
Routes 路由目录,插件自定义路由。admin.php 存放管理后台路由, shop.php 存放前台路由
Static 存放静态文件,比如图片,可以放到 image 目录,可以在对应插件模板文件用 helper plugin_resize(插件编码, '/image/xx.png') 引用
Views 插件模板目录,包括前后台 blade.php 模板文件
Bootstrap.php 插件启动类需要实现一个 boot 公共方法: public function boot(), 再在该方法中添加 hook
columns.php 插件配置,此文件存放插件需要的配置字段,后台插件编辑页会自动显示。如果需要自定义配置页面,请在插件下添加 /Views/admin/config.blade.php 模板文件
config.json 插件基本信息,包括编码,名称,描述,类型,图标,作者等信息

# config.json 配置

用自带的 最新商品列表 插件举例:

{
    "code": "latest_products",
    "name": {
        "zh_cn": "最新商品列表",
        "en": "Latest Products"
    },
    "description": {
        "zh_cn": "首页菜单添加最新商品列表功能",
        "en": "Latest products for header menu"
    },
    "type": "feature",
    "version": "v1.0.0",
    "icon": "/image/logo.png",
    "author": {
        "name": "成都光大网络科技有限公司",
        "email": "[email protected]"
    }
}

name 和 description 可以按照上面格式配置多语言,语言 code 有:

de,en,es,fr,id,it,ja,ko,ru,zh_cn,zh_hk

type 是插件类型,所有类型有:

名称 code
支付方式 payment
营销推广 marketing
配送方式 shipping
主题模板 theme
数据分析 analysis
客户服务 service
语言翻译 language
其他功能 feature