开发

未匹配的标注

📖 组件文档请查看 amis ~
🫣 框架论坛




创建扩展

在扩展管理中使用 创建扩展 来生成一个扩展的骨架。

配置相应的报名及命名空间,然后点击 确认 即可。

格式

  • 包名: 作者名/扩展名 (例如: slowlyo/banner)
  • 命名空间: 作者名\扩展名 (例如: Slowlyo\Banner)

扩展包创建完成后,会在 extensions 目录下生成一个扩展包的骨架,目录结构如下:

    ├── .gitignore
    ├── composer.json   # composer配置文件, 需要自行配置alias/authors/description等信息, 用于展示
    ├── README.md   # 扩展说明文档, 可以在扩展管理中查看
    ├── database
    │   └── migrations  # 数据库迁移文件, 与laravel的迁移文件一致
    ├── public
    │   └── extensions  # 扩展前端文件, 会发布到 public/extensions 目录下
    │       └── slowlyo
    │           └── banner
    └── src
        ├── BannerServiceProvider.php   # 扩展服务提供者
        └── Http
            ├── routes.php  # 扩展路由
            ├── Middleware  # 扩展中间件
            └── Controllers # 扩展控制器
                └── BannerController.php

配置

logo

在插件根目录下添加 logo.png 文件,用于在扩展管理中展示。

文档

根目录的 README.md 文件, 会在扩展管理中展示。

composer.json

字段 说明
alias 扩展名称(在扩展管理中以这个为主)
authors 作者信息
description 描述信息
version 版本号
homepage 扩展主页

功能开发

路由

你可以在 extensions/扩展名/src/Http/routes.php 文件中定义扩展的路由。

注意避免重复

菜单

src/BannerServiceProvider.php 中添加 $menu 属性:

protected $menu = [
    [
        'parent'   => '',
        'title'    => '轮播',
        'url'      => '/banner',
        'url_type' => '1',
        'icon'     => 'fa fa-users',
    ],
    [
        'parent'   => '轮播', // 此处父级菜单根据 title 查找
        'title'    => '子菜单',
        'url'      => '/banner/child',
        'url_type' => '1',
        'icon'     => 'fa fa-users',
    ],
];

语言包

在扩展目录下创建 lang 目录, 逻辑与laravel的语言包一致, 例如:

    ├── lang
    │   ├── zh-CN
    │   │   └── banner.php
    │   └── en
    │       └── banner.php

在控制器中可以通过下面的方法访问语言包内容,关于多语言的更多用法可以参考 laravel 官方文档

use Slowlyo\Banner\BannerServiceProvider;

BannerServiceProvider::trans('title');

前端

你可以在服务提供者中使用 Admin::js() 方法来动态加载你的前端文件 [register() / init()]

中间件

src/BannerServiceProvider.php 中添加 $middleware 属性:

protected $middleware = [
    LogOperation::class,
    // ...
];

扩展配置

src/BannerServiceProvider.php 中有以下方法, 依葫芦画瓢即可:

public function settingForm()
{
    return $this->baseSettingForm()->body([
        TextControl::make()->name('value')->label('Value')->required(true),
        // 继续添加你的配置项
    ]);
}

你可以使用 setting 方法来获取配置项的值:

use Slowlyo\Banner\BannerServiceProvider;

// 读取配置参数
$except = BannerServiceProvider::setting('except');
// 支持多级配置
$except = BannerServiceProvider::setting('except.value');

数据库迁移

extensions/扩展名/database/migrations 目录下创建迁移文件

扩展启用时会自动执行迁移文件, 卸载时会自动回滚

其他

基础的服务提供者中提供了 customInitBeforecustomInitAfter 两个方法, 用于扩展的自定义初始化操作

发布到 Packagist.org

参考 Packagist 中文文档




😏建议在使用前通读并背诵相关文档: laravelamis ~

常见问题参见 FAQ

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~