Laravel 常用包汇总
文章目录
- 解决跨域——laravel-cors
- 区分移动端和PC端——jenssegers/agent
- 快速开发——l5-repository
- 图片上传到OSS—— johnlui/AliyunOSS
- 发送模板短信——laravel-sms
- 查看错误日志——laravel-log-viewer
- 生成二维码图片——simple-qrcode
- 权限验证——zizaco/entrust
- 微信开发——zoujingli/wechat-developer
解决跨域——laravel-cors
- 场景
laravel作为后端API使用的时候,前端ajax请求的时候 遇到跨域的问题
- 安装
barryvdh/laravel-cors
使用方法很简单
安装:
composer require barryvdh/laravel-cors
- 使用:
app/Http/Kernel.php
在 protected $middleware
数组里添加 \Barryvdh\Cors\HandleCors::class
查看效果:这时候ajax 访问就可以没有跨域的问题了
区分移动端和PC端——jenssegers/agent
- 场景
Laravel User Agent 轻松识别客户端信息 —— jenssegers/agent,客户端会通过这个请求向访问网站提供浏览器类型、操作系统及版本,浏览器渲染引擎,浏览器语言等标识的信息
- github地址
https://github.com/jenssegers/agent
- 安装
安装: composer require jenssegers/agent
- 使用
$this->agent = new Agent();
//判断是否手机
$this->agent->isMobile()
//判断是否平板
$this->agent->isTablet()
//其余请自行查看手册
……
快速开发——l5-repository
- 场景
需要快速开发,一键生成所有增删改查,集成了控制器,验证器,模型,仓库,呈现器和转换器等
- github地址
https://github.com/andersao/l5-repository
- 安装
composer require prettus/l5-repository
- 使用
- 在您的 config/app.php下的provider数组里添加
Prettus\Repository\Providers\RepositoryServiceProvider::class
如:
providers => [...Prettus\Repository\Providers\RepositoryServiceProvider::class,],
- 发布配置(将在
config
下生成repository.php
文件)
php artisan vendor:publish
- 使用以下命令,将创建控制器
controller
、验证器Validator
、模型Model
、仓库Repository
、呈现器Presenter
和转换器Transform
的类文件。
php artisan make:entity name
其余的使用请自行查看手册
图片上传到OSS—— johnlui/AliyunOSS
- 场景
软件需要上传大量的文件或图片,或者是为了方便处理图片,都可以使用阿里云OSS方便我们开发。
- github地址
https://github.com/johnlui/AliyunOSS
- 安装
composer require johnlui/aliyun-oss:~2.0
- 使用
- 构建service文件
新建 app/services/OSS.php
内容可参考:OSS.php
<?phpnamespace App\Services;use JohnLui\AliyunOSS\AliyunOSS;use Config;class OSS {private $ossClient;public function __construct($isInternal = false){$serverAddress = $isInternal ? Config::get('oss.ossServerInternal') : Config::get('oss.ossServer');$this->ossClient = AliyunOSS::boot($serverAddress,Config::get('oss.AccessKeyId'),Config::get('oss.AccessKeySecret'));}// 默认上传文件使用内网,免流量费public static function upload($ossKey, $filePath, $isInternal = true){$oss = new OSS($isInternal);$oss->ossClient->setBucket('你的Bucket名字');$oss->ossClient->uploadFile($ossKey, $filePath);}/*** 直接把变量内容上传到oss* @param $osskey* @param $content*/public static function uploadContent($osskey,$content){$oss = new OSS(true); // 上传文件使用内网,免流量费$oss->ossClient->setBucket('你的Bucket名字');$oss->ossClient->uploadContent($osskey,$content);}/*** 删除存储在oss中的文件** @param string $ossKey 存储的key(文件路径和文件名)* @return*/public static function deleteObject($ossKey){$oss = new OSS(true); // 上传文件使用内网,免流量费return $oss->ossClient->deleteObject('你的Bucket名字', $ossKey);}/*** 复制存储在阿里云OSS中的Object** @param string $sourceBuckt 复制的源Bucket* @param string $sourceKey - 复制的的源Object的Key* @param string $destBucket - 复制的目的Bucket* @param string $destKey - 复制的目的Object的Key* @return Models\CopyObjectResult*/public function copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey){$oss = new OSS(true); // 上传文件使用内网,免流量费return $oss->ossClient->copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey);}/*** 移动存储在阿里云OSS中的Object** @param string $sourceBuckt 复制的源Bucket* @param string $sourceKey - 复制的的源Object的Key* @param string $destBucket - 复制的目的Bucket* @param string $destKey - 复制的目的Object的Key* @return Models\CopyObjectResult*/public function moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey){$oss = new OSS(true); // 上传文件使用内网,免流量费return $oss->ossClient->moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey);}public static function getUrl($ossKey){$oss = new OSS();$oss->ossClient->setBucket('你的Bucket名字');return $oss->ossClient->getUrl($ossKey, new \DateTime("+1 day"));}public static function createBucket($bucketName){$oss = new OSS();return $oss->ossClient->createBucket($bucketName);}public static function getAllObjectKey($bucketName){$oss = new OSS();return $oss->ossClient->getAllObjectKey($bucketName);}/*** 获取指定Object的元信息** @param string $bucketName 源Bucket名称* @param string $key 存储的key(文件路径和文件名)* @return object 元信息*/public static function getObjectMeta($bucketName, $osskey){$oss = new OSS();return $oss->ossClient->getObjectMeta($bucketName, $osskey);}
}
- 增加相关配置
在app/config/oss.php
中增加以下配置
<?php
return ['useInternal' => false,//是否使用OSS内网传输来省流量'ossServer' => '服务器外网地址', //青岛为 http://oss-cn-qingdao.aliyuncs.com'ossServerInternal' => '服务器内网地址', //青岛为 http://oss-cn-qingdao-internal.aliyuncs.com'AccessKeyId' => '阿里云给的AccessKeyId','AccessKeySecret' => '阿里云给的AccessKeySecret',
];
- 具体实现
use App\Services\OSS;OSS::upload('文件名', '本地路径'); // 上传一个文件echo OSS::getUrl('某个文件的名称'); // 打印出某个文件的外网链接OSS::createBucket('一个字符串'); // 新增一个 Bucket。注意,Bucket 名称具有全局唯一性,也就是说跟其他人的 Bucket 名称也不能相同。OSS::getAllObjectKey('某个 Bucket 名称'); // 获取该 Bucket 中所有文件的文件名,返回 Array。
- 常见问题
问题1:运行时出现
Undefined index: host
原因:配置文件中 ossServer 的值未加
http://
问题2:运行时出现
The specified bucket is not valid.
原因:内外地址填写时加了
BucketName
例如http://BucketName.oss-cn-beijing.aliyuncs.com
拼接起来就变成了http://bucketName.bucketName.oss-cn...com
解决方案:在配置文件里面
ALIOSS_SERVER=http://oss-cn-beijing.aliyuncs.com
这个外网地址前面不要加上Bucket
名字
- 彩蛋
如果你前端需要处理图片(如:缩放,裁剪,旋转,加水印等),用OSS是非常方便的。详情查看Oss文档
发送模板短信——laravel-sms
- 场景
发送短信验证码,短信通知等
- github地址
https://github.com/toplan/laravel-sms
- 安装
composer require toplan/laravel-sms:~2.6
- 使用
详细使用可以参照之前我写过的一篇博客Laravel下的短信验证码注册
查看错误日志——laravel-log-viewer
- 场景
需要可视化的查看服务器上的错误日志,以便于调试Bug
- github地址
https://github.com/rap2hpoutre/laravel-log-viewer
- 安装
composer require rap2hpoutre/laravel-log-viewer
- 使用
- 在
config/app.php
中的provider
里添加
Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,
- 路由里定义
Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index');
生成二维码图片——simple-qrcode
- 场景
需要根据链接地址生成二维码图片
- github地址
https://github.com/SimpleSoftwareIO/simple-qrcode
- 安装
composer require simplesoftwareio/simple-qrcode 1.3.*
- 使用
- 在
config/app.php
中的provider
里注册服务提供者
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
- 在
config/app.php
中的aliases
里 添加QrCode
门面
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
- 基本用法
a. 使用QrCode::generate('Hello,World!');
可以生成一个Hello,World!
的二维码
b.使用QrCode::format('png')->size(150)->merge('/public/images/logo.png')->errorCorrection('H')->generate('Hello,World!','../public/images/'.$image_name);
讲解:format()为要生成的图片格式,size()为生成的图片大小,merge()为添加二维码中间logo图片,errorCorrection()定义容错级别,为了让二维码保持高可识别度一般定义为errorCorrection(‘H’),generate()为生成二维码,第一个参数为需要生成二维码的字符串,第二个参数为保存的图片地址。
需要注意的是所有的方法都支持连贯操作,但是
generate
方法必须在最后,format
必须在第一个
具体的操作可以查看博客
权限验证——zizaco/entrust
- 场景
在做后台管理时我们经常会用到权限,限制用户的操作范围
- github地址
https://github.com/Zizaco/entrust
- 安装
composer require zizaco/entrust 5.2.x-dev
- 使用
- 在
config/app.php
中的provider
里注册服务提供者
Zizaco\Entrust\EntrustServiceProvider::class,
- 在
config/app.php
中的aliases
里 添加Entrust
门面
‘Entrust’ => Zizaco\Entrust\EntrustFacade::class,
- 发布配置文件
php artisan vendor:publish
- 打开
config/auth.php
配置,将你的用户表进行关联
'providers' => ['users' => ['driver' => 'eloquent','model' => Namespace\Of\Your\User\Model\User::class,'table' => 'users',],'admins' => ['driver' => 'eloquent','model' => App\Models\Admin::class,'table' => 'admins'],
],
- 基本使用
(1) 迁移数据库,运行php artisan entrust:migration
和php artisan migrate
自动生成以下表
roles — 角色表
permissions — 权限表
role_user — 角色和用户之间的关系
permission_role— 角色和权限之间的关系
(2) 创建相应的模型
a.创建Role
模型
<?
php namespace App;
use Zizaco\Entrust\EntrustRole;class Role extends EntrustRole
{}
b.创建Permission
模型
<?php
namespace App;
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{}
c.创建Admin
模型
<?php
use Zizaco\Entrust\Traits\EntrustUserTrait;
class Admin extends Eloquent
{use EntrustUserTrait; // T添加到你的模型...
}
(3) 创建中间件
在app/Http/Kernel.php
中添加'permission' => \App\Http\Middleware\Permission::class,
protected $routeMiddleware = [……'permission' => \App\Http\Middleware\Permission::class,];
在app/Http/Middeware
下创建permisson.php
<?phpnamespace App\Http\Middleware;use App\Models\Admin;
use Closure;
use Illuminate\Http\Request;class Permission
{/*** Handle an incoming request.** @param Request $request* @param Closure $next* @return mixed*/public function handle($request, Closure $next){//获取当前登录的管理员$user = auth()->user();//获取管理员访问的路由$name = $request->route()->action['as'];//判断该管理员是否有权访问该路由if (!$user->can($name)) {abort(403, 'Forbidden');}return $next($request);}
}
(4)定义路由
将你需要做权限限制的路由绑定中间件permisson
,比如查看文章需要权限验证:
Route::group(['prefix' => '' , 'middleware'=> 'permission'], function () {Route::resources(['article' => 'ArticleController','articleCat' => 'ArticleCatsController',]);});
微信开发——zoujingli/wechat-developer
- 场景
当你需要对接第三方微信时,可能会遇到微信支付,发送模板消息,自动回复等场景
- github地址
https://github.com/zoujingli/WeChatDeveloper
- 安装
composer require zoujingli/wechat-developer
- 使用
请查看官方手册
Laravel 常用包汇总相关推荐
- r语言的MASS包干什么的_R语言常用包汇总
转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...
- 【Python学习】 - 几乎所有常用包汇总
库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...
- python常用的包_Python3之常用包汇总
原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv. ...
- 【php-laravel框架】第二节:laravel常用的扩展包汇总及安装教程
教程说明:laravel的常用扩展包汇总及安装方式. 使用版本:laravel5.5 lts版本 集成环境:phpstudy[windows推荐].宝塔windows面板[linux推荐] IDEA编 ...
- python命令大全下载-Python pip 常用命令汇总
使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...
- python常用命令大全-Python pip 常用命令汇总
使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...
- python汇总数据的程序_Python数据处理常用程序模块汇总
Python数据处理常用程序模块汇总 本文主要将日后工作中常用到的一些简短程序块记录下来,以便可以快速更改进行适配,诸如数据读取程序,遍历程序等 1.CSV数据读取遍历模块 CSV将是工作中最常见到的 ...
- linux视频日记软件下载,Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
整理总结日常Ubuntu中使用的一些软件,事实证明使用Linux真的会让人的欲望变小有个能用的就不错啦,不要调三捡四 解压类 Unzip | unzip -O CP936 files Unrar ra ...
- Java常用命令汇总(笔记)
Java常用命令汇总 文章目录 Java常用命令汇总 1.javac 将文件编译成.class文件 2.java 执行 .class文件,若类中没有main函数,则不能执行. 3.jar 主要用于打包 ...
最新文章
- 【转】Android下编译jni库的二种方法(含示例) -- 不错
- 面试问我,创建多少个线程合适?我该怎么说
- Docker容器导入导出
- 移动WEB前端开发资源整合
- DevExpress使用技巧总结
- GitHub 五万星登顶,程序员命令行最全技巧宝典!
- 企业级监控软件使用zabbix key监控nginx status各种状态
- java成神之——集合框架之ArrayList,Lists,Sets
- 一款跑在云上的定制容器专属 OS
- Modbus安全:M340停启和流量分析
- 迅雷下载电影天堂片源,出现“应版权方要求,文件无法下载”的解决方法
- Python学习笔记-2017.5.4thon学习笔记-2017.5.22
- 1.1.1 什么是程序?
- python搜索网页关键词_新闻网页Python爬虫(jieba分词+关键词搜索排序)
- 计算机知识架构一:计算机组成、体系结构
- Flash ANE打包
- ​浅谈 Java 后端开发工程师腾讯面试经历分享总结
- linux dnf命令安装
- AI智能音箱五大功能中应用的数字功放芯片
- 记一次巨KD的中考维护历程
热门文章
- RDS SQL Server死锁(Deadlock)系列之五利用Extended Events获取死锁信息
- 在/mnt/看不到共享文件夹的解决
- 小米集团:6月3日至7月3日回购的逾1亿B类普通股获注销
- Atitit r2017 r3 doc list on home ntpc.docx
- 微信APP支付的appid
- computed vue 不 触发_Vue中的computed怎么理解?是如何实现的?
- Avue-curd个性化定制
- 推荐国产神器Eolink!API优先,Eolink领先!
- 华三无线设备系列 (瘦AP转胖AP的配置方法)
- 渗透武器库---信息收集工具大全