Skip to content

扩展列表

向军大叔每晚八点在 抖音bilibli 直播

xj-small

下面是常用的 Laravel 扩展包

有些扩展包在 doc.houdunren.com 文档库有使用说明。其他请查看插件官方文档

扩展包说明
laravel-lang/lang语言包
endroid/qr-code二维码生成
erusev/parsedownMarkdown 解析器
hisorange/browser-detect设备检测
houdunwang/arr数据增强
mewebstudio/captcha图形验证码
mews/purifierhtml 安全处理
nwidart/laravel-modules项目模块化处理
socialiteproviders/wechat-web微信客户端 H5 登录
socialiteproviders/weixin-web微信 PC 扫码登录
spatie/image图片压缩处理(推荐)
Intervention/image图像处理库
spatie/laravel-activitylog网站动态
spatie/laravel-permission基于角色的权限控制
yansongda/pay多平台支付处理
barryvdh/laravel-debugbar调试面板
barryvdh/laravel-ide-helper生成自动提示文件
laravel-api-response-helpersapi资源响应帮助函数

图片处理

使用 spatie/image 扩展包可以进行图片压缩、裁切等处理。

安装扩展包

composer require spatie/image

等比例裁切图片

下面是等比例以原图片中心裁切图片,并将裁切后的图片保存为 public/images/test.jpeg

Image::load('images/hd.jpeg')
->crop(Manipulations::CROP_CENTER, 500, 100)
->save(public_path('images/test.jpeg'));

多语言

默认表单提示是英文的,我们可以安装语言包构建多语言环境。

composer require --dev laravel-lang/common laravel-lang/publisher laravel-lang/lang laravel-lang/attributes laravel-lang/http-statuses

接下来发布服务提供者

php artisan vendor:publish --provider="LaravelLang\Publisher\ServiceProvider"

然后在命令行执行以下指令,添加中文语言包到 resource/lang 目录

php artisan lang:add zh_CN

修改 config/app.php 配置文件,设置语言包(即语言包的目录名)

'locale' => 'zh_CN',

验证码

使用 mewebstudio/captcha 可以方便的生成网站图形验证码。

Preview

请参考官网文档进行安装,下面介绍如果生成支持前后台分离的验证码。

修改 .env 配置文件,开启验证码

CAPTCHA_DISABLE=false

在前台框架 vue 或 react 中向以下地址发送请求,获取验证码数据

http://localhost/captcha/api/math

在 postman 中测试接口,可以得到以下数据

{
    "sensitive": false,
    "key": "$2y$10$819PNm1n6567hQRLoKpadOS6n.8u0F5YmnR6Nrw57KvmRL4z8gPDe",
    "img": "data:image/png;base64..."
}

前台需要把 key 与用户输入的验证码数据提交到后台,然后使用以下表单验证规则进行验证

$rules = ['captcha' => 'required|captcha_api:'. request('key') . ',math'];

有时前端需要设置代理,下面是 vite 中的代理设置

server: {
      host: true,
      proxy: {
        '/api': {
          target: env.VITE_API_URL,
          changeOrigin: true,
        },
        //验证码接口
        '/captcha/api/math': {
          target: env.VITE_API_URL,
          changeOrigin: true,
        },
      },
    },

设备判断

判断移动、平板设备等场景还是很常见的。使用browser-detect可以很容易的进行设备判断。

安装扩展

composer require hisorange/browser-detect

常用功能

下面介绍常用的功能,更多功能的使用请查看官方文档

判断浏览器

use Browser;

// 判断设备类型
Browser::isMobile();
Browser::isTablet();
Browser::isDesktop();

// 浏览器检测
if (Browser::isFirefox() || Browser::isOpera()) {
    $response .= '<script src="firefox-fix.js"></script>';
}

// 操作系统检测
if (Browser::isAndroid()) {
    $response .= '<a>Install our Android App!</a>';
} elseif (Browser::isMac() && Browser::isMobile()) {
    $response .= '<a>Install our iOS App!</a>';
}

blade 模板

@mobile
    <p>这是移动模板!</p>
    @include('your-mobile-template')
@endmobile

@tablet
    <p>这是平板模板!</p>
    <link rel="stylesheet" href="tablet.css" title="Reduce the page size, load what the user need">
@endtablet

@desktop
    <p>这是桌面模板!</p>
@enddesktop

dbal

dbal 是非常方便的数据库管理驱动

文档

Github: https://github.com/doctrine/dbal

官网:https://www.doctrine-project.org/projects/dbal.html

使用

下面是在 laravel 框架中使用的示例:

$config = new \Doctrine\DBAL\Configuration();
$connectionParams = array(
	'dbname'   => config('database.connections.mysql.database'),
	'user'     => config('database.connections.mysql.username'),
	'password' => config('database.connections.mysql.password'),
	'host'     => config('database.connections.mysql.host'),
	'driver'   => 'pdo_mysql',
	'charset'  => config('database.connections.mysql.charset')
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
$sm = $conn->getSchemaManager();

#获取configs表字段信息
$lists = $sm->listTableColumns('configs');

#获取列表注释
dd($lists['title']->getComment());

具体使用请查看官方文档,功能非常多且方便

Active 状态

向军大叔每晚八点在 抖音bilibli 直播

xj-small

在我们构建页面的过程中,经常会根据 url 的参数设置页面元素的 active 属性,将其渲染为「选中」状态。使用letrunghieu/active库可以很容易实现。

安装扩展

使用 composer 安装扩展包

text
composer require hieu-le/active

基本使用

下面介绍扩展包的常用功能,更多细节使用请查看文档

下面是语法介绍

text
function active_class($condition, $activeClass = 'active', $inactiveClass = '')

此扩展包提供了一批函数让我们方便的进行判断

函数说明
if_uri()判断当前的 url 是否满足指定的 url
if_uri_pattern()判断当前的 url 是否含有指定的字符
if_query()判断指定的 GET 变量是否符合设置的值
if_route()判断当前对应的路由是否是指定的路由
if_route_pattern()判断当前的路由是否包含指定的字符
if_route_param()判断当前的 url 有无指定的路由参数

以下是通过示例说明使用

<a class="{{ active_class(if_route('users.index')) }}" href="">会员</a>

<a class="{{ active_class(if_route('cateogry.show') && if_route_param('category', 1)) }}" href="">实战</a>

<a class="{{ active_class(if_route('cateogry.show') && if_route_param('category', 2)) }}" href="">阶段</a>

webpack-bundle-analyzer

webpack-bundle-analyzer 可以在执行编译时清楚的看到每个包压缩后大小。

安装配置

使用 npm 或 cnpm 等进行安装

npm install --save-dev webpack-bundle-analyzer

在项目的 webpack.mix.js 中进行配置

const BundleAnalyzerPlugin = require("webpack-bundle-analyzer")
    .BundleAnalyzerPlugin;

mix.webpackConfig({
    plugins: [new BundleAnalyzerPlugin()]
})
    .js("resources/js/app.js", "public/js")
    .sass("resources/sass/app.scss", "public/css")
    .extract(["vue", "axios", "jquery", "lodash", "bootstrap"])
    .version();

运行

在命令行执行 npm run production 生产编译,将自动打开网页显示如下界面

image-20200628211429694

laravel-ide-helper

laravel-ide-helper 用于生成帮助器文件,使 IDE 能够提供准确的自动提示。生成是根据项目中的文件完成的,因此它们始终是最新的。

安装

使用以下命令安装扩展名:

composer require --dev barryvdh/laravel-ide-helper

请将服务提供商添加到 config/app.php文件中的providers数组中:

Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,

在 Laravel 中,可以在app/Providers/AppServiceProvider.php文件中的register() 方法内定义,而不用像上面一样添加服务提供商:

public function register()
{
    if ($this->app->environment() !== 'production') {
        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    // ...
}

这将允许应用程序在非生产环境中加载 Laravel IDE 帮助程序。

使用

自动生成 PHPDoc 文档信息,用于自动提示

php artisan ide-helper:generate

配置composer.json文件用于在每次更新依赖项时自动运行生成程序

"scripts": {
    "post-update-cmd": [
        "Illuminate\\Foundation\\ComposerScripts::postUpdate",
        "@php artisan ide-helper:generate",
        "@php artisan ide-helper:meta"
    ]
},