文章目录

  • 解决跨域——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.phpprotected $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

  • 使用
  1. 在您的 config/app.php下的provider数组里添加
    Prettus\Repository\Providers\RepositoryServiceProvider::class
    如:

providers => [...Prettus\Repository\Providers\RepositoryServiceProvider::class,],
  1. 发布配置(将在config下生成repository.php文件)
php artisan vendor:publish
  1. 使用以下命令,将创建控制器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

  • 使用
  1. 构建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);}
}
  1. 增加相关配置

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',
];
  1. 具体实现
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

  • 使用
  1. config/app.php中的provider里添加
Rap2hpoutre\LaravelLogViewer\LaravelLogViewerServiceProvider::class,
  1. 路由里定义
Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index');

生成二维码图片——simple-qrcode

  • 场景

需要根据链接地址生成二维码图片

  • github地址

https://github.com/SimpleSoftwareIO/simple-qrcode

  • 安装

composer require simplesoftwareio/simple-qrcode 1.3.*

  • 使用
  1. config/app.php中的provider里注册服务提供者
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
  1. config/app.php中的aliases里 添加 QrCode 门面
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
  1. 基本用法

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

  • 使用
  1. config/app.php中的provider里注册服务提供者

Zizaco\Entrust\EntrustServiceProvider::class,

  1. config/app.php中的aliases里 添加 Entrust 门面

‘Entrust’ => Zizaco\Entrust\EntrustFacade::class,

  1. 发布配置文件

php artisan vendor:publish

  1. 打开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. 基本使用

(1) 迁移数据库,运行php artisan entrust:migrationphp 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

  1. 场景

当你需要对接第三方微信时,可能会遇到微信支付,发送模板消息,自动回复等场景

  1. github地址

https://github.com/zoujingli/WeChatDeveloper

  1. 安装

composer require zoujingli/wechat-developer

  1. 使用

请查看官方手册

Laravel 常用包汇总相关推荐

  1. r语言的MASS包干什么的_R语言常用包汇总

    转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...

  2. 【Python学习】 - 几乎所有常用包汇总

    库名称简介 Chardet 字符编码探测器,可以自动检测文本.网页.xml的编码. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable 主要用于在终端或浏览器端构 ...

  3. python常用的包_Python3之常用包汇总

    原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv. ...

  4. 【php-laravel框架】第二节:laravel常用的扩展包汇总及安装教程

    教程说明:laravel的常用扩展包汇总及安装方式. 使用版本:laravel5.5 lts版本 集成环境:phpstudy[windows推荐].宝塔windows面板[linux推荐] IDEA编 ...

  5. python命令大全下载-Python pip 常用命令汇总

    使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...

  6. python常用命令大全-Python pip 常用命令汇总

    使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install ...

  7. python汇总数据的程序_Python数据处理常用程序模块汇总

    Python数据处理常用程序模块汇总 本文主要将日后工作中常用到的一些简短程序块记录下来,以便可以快速更改进行适配,诸如数据读取程序,遍历程序等 1.CSV数据读取遍历模块 CSV将是工作中最常见到的 ...

  8. linux视频日记软件下载,Linux(Ubunt)使用日记------常用软件汇总(不定时更新)

    整理总结日常Ubuntu中使用的一些软件,事实证明使用Linux真的会让人的欲望变小有个能用的就不错啦,不要调三捡四 解压类 Unzip | unzip -O CP936 files Unrar ra ...

  9. Java常用命令汇总(笔记)

    Java常用命令汇总 文章目录 Java常用命令汇总 1.javac 将文件编译成.class文件 2.java 执行 .class文件,若类中没有main函数,则不能执行. 3.jar 主要用于打包 ...

最新文章

  1. 【转】Android下编译jni库的二种方法(含示例) -- 不错
  2. 面试问我,创建多少个线程合适?我该怎么说
  3. Docker容器导入导出
  4. 移动WEB前端开发资源整合
  5. DevExpress使用技巧总结
  6. GitHub 五万星登顶,程序员命令行最全技巧宝典!
  7. 企业级监控软件使用zabbix key监控nginx status各种状态
  8. java成神之——集合框架之ArrayList,Lists,Sets
  9. 一款跑在云上的定制容器专属 OS
  10. Modbus安全:M340停启和流量分析
  11. 迅雷下载电影天堂片源,出现“应版权方要求,文件无法下载”的解决方法
  12. Python学习笔记-2017.5.4thon学习笔记-2017.5.22
  13. 1.1.1 什么是程序?
  14. python搜索网页关键词_新闻网页Python爬虫(jieba分词+关键词搜索排序)
  15. 计算机知识架构一:计算机组成、体系结构
  16. Flash ANE打包
  17. ​浅谈 Java 后端开发工程师腾讯面试经历分享总结
  18. linux dnf命令安装
  19. AI智能音箱五大功能中应用的数字功放芯片
  20. 记一次巨KD的中考维护历程

热门文章

  1. RDS SQL Server死锁(Deadlock)系列之五利用Extended Events获取死锁信息
  2. 在/mnt/看不到共享文件夹的解决
  3. 小米集团:6月3日至7月3日回购的逾1亿B类普通股获注销
  4. Atitit r2017 r3 doc list on home ntpc.docx
  5. 微信APP支付的appid
  6. computed vue 不 触发_Vue中的computed怎么理解?是如何实现的?
  7. Avue-curd个性化定制
  8. 推荐国产神器Eolink!API优先,Eolink领先!
  9. 华三无线设备系列 (瘦AP转胖AP的配置方法)
  10. 渗透武器库---信息收集工具大全