在 Laravel 5.5+ 应用中配置使用阿里云提供的短信服务及文件存储服务(OSS)
配置短信服务
基于Laravel框架的使用方法
- 安装
composer require mrgoon/aliyun-sms dev-master
- 在
config/app.php
中添加如下代码
'providers' => [
//......此处省略大量代码
/**
* 阿里云短信
*/
Mrgoon\AliSms\ServiceProvider::class,
],
//同时,可以选择性添加aliases
'aliases' => [
//......此处省略大量代码
/**
* 阿里云短信
*/
'AliSms'=>Mrgoon\AliSms\ServiceProvider::class,
],
- 添加系统服务
php artisan vendor:publish
#这里要选择对应的编号
- 上一步会新增
config/aliyunsms.php
文件
'access_key' => env('ALIYUN_ACCESSKEYID'), // accessKey
'access_secret' => env('ALIYUN_ACCESSKEYSECRET'), // accessSecret
'sign_name' => env('ALIYUN_SMS_SIGN_NAME'), // 签名
- 在
.env
文件中添加环境变量:
ALIYUN_ACCESSKEYID=your access key
ALIYUN_ACCESSKEYSECRET=your secret key
ALIYUN_SMS_SIGN_NAME=sign name
- 使用
$aliSms = new AliSms();
$response = $aliSms->sendSms('phone number', 'SMS_code', ['name'=> 'value in your template']);
//dump($response);
非laravel框架的使用方法
- 加载方式通过composer,不变
- 使用样例代码如下:
$config = [
'access_key' => 'your access key',
'access_secret' => 'your access secret',
'sign_name' => 'your sign name',
];
$aliSms = new Mrgoon\AliSms\AliSms();
$response = $sms->sendSms(
'phone number',
'tempplate code',
['name'=> 'value in your template'],
$config
);
配置图片上传OSS
- 安装
composer require jacobcyl/ali-oss-storage
- 在
config/app.php
中添加如下代码
'providers' => [
//......此处省略大量代码
/**
* 阿里云OSS
*/
Jacobcyl\AliOSS\AliOssServiceProvider::class,
],
//同时,可以选择性添加aliases
'aliases' => [
//......此处省略大量代码
/**
* 阿里云OSS
*/
'AliOSS'=>Jacobcyl\AliOSS\AliOssServiceProvider::class,
],
- 编辑配置文件
config/filesystems.php
'default' => env('FILESYSTEM_DRIVER', 'local'),
.....
'disks' => [
....
'oss' => [
'driver' => 'oss',
'access_id' => env('ALIYUN_ACCESSKEYID'),
'access_key' => env('ALIYUN_ACCESSKEYSECRET'),
'bucket' => env('ALIYUN_BUCKET'),
'endpoint' => env('ALIYUN_ENDPOINT'),
//'endpoint_internal' => '<internal endpoint [OSS内网节点] 如:oss-cn-shenzhen-internal.aliyuncs.com>',
//'cdnDomain' => '<CDN domain, cdn域名>',
'ssl' => false,
'isCName' => false,
'debug' => false,
],
],
- 在
.env
文件中添加环境变量:
ALIYUN_ACCESSKEYID=your access key
ALIYUN_ACCESSKEYSECRET=your secret key
ALIYUN_BUCKET=your bucket
ALIYUN_ENDPOINT=your endpoint
配置ueditor + OSS
- 安装
composer require ilimpid/laravel-u-editor
- 在
config/app.php
中添加如下代码
'providers' => [
//......此处省略大量代码
/**
* 百度编辑器
*/
Stevenyangecho\UEditor\UEditorServiceProvider::class,
],
//同时,添加aliases
'aliases' => [
//......此处省略大量代码
/**
* 百度编辑器
*/
'UEditor'=>Stevenyangecho\UEditor\UEditorServiceProvider::class,
],
- 添加系统服务
php artisan vendor:publish
- 上一步会新增
config/UEditorUpload.php
文件
'mode' => 'aliyun',//上传方式,local 为本地 qiniu 为七牛 aliyun为阿里云
'aliyun' => [
'accessKeyId' => env('ALIYUN_ACCESSKEYID'),
'accessKeySecret' => env('ALIYUN_ACCESSKEYSECRET'),
'endpoint' => env('ALIYUN_ENDPOINT'),
'url' => 'http://'.env('ALIYUN_BUCKET').'.'.env('ALIYUN_ENDPOINT'),
'bucket' => env('ALIYUN_BUCKET'),
'directory' => 'images/'.date('Ymd',time()),
],
//注意:编辑器上传图片的时候会在本地保存一张,下面配置必须设置,images必须保持一致
/* 上传图片配置项 */
'upload' => [
/* 上传保存路径,可以自定义保存路径和文件名格式 */
"imagePathFormat" => "/storage/images/{yyyy}{mm}{dd}/{time}{rand:6}",
],
- 在
.env
文件中添加环境变量:
ALIYUN_ACCESSKEYID=your access key
ALIYUN_ACCESSKEYSECRET=your secret key
ALIYUN_BUCKET=your Bucket key
ALIYUN_ENDPOINT=your Endpoint key
非laravel-admin使用
@include(UEditor::head)
<div class="col-sm-10">
<script id="ueditor"></script>
<script>
var ue = UE.getEditor("ueditor");
ue.ready(function () {
//由于Laravel有防csrf防伪造攻击的解决所以加上此行
ue.execCommand(serverparam, _token, {{ csrf_token() }});
});
</script>
</div>
基于 laravel-admin 使用
- 增加组件文件
app/Admin/Extensions/Form/uEditor.php
<?php
namespace App\Admin\Extensions\Form;
use Encore\Admin\Form\Field;
class uEditor extends Field
{
// 定义视图
protected $view = 'admin.uEditor';
// css资源
protected static $css = [];
// js资源
protected static $js = [
'laravel-u-editor/ueditor.config.js',
'laravel-u-editor/ueditor.all.min.js',
'laravel-u-editor/lang/zh-cn/zh-cn.js'
];
public function render()
{
$this->script = <<<EOT
//解决第二次进入加载不出来的问题
UE.delEditor("ueditor");
// 默认id是ueditor
var ue = UE.getEditor('ueditor', {
// 自定义工具栏
toolbars: [
['bold', 'italic', 'underline', 'strikethrough', 'blockquote', 'insertunorderedlist', 'insertorderedlist', 'justifyleft', 'justifycenter', 'justifyright', 'link', 'insertimage', 'source', 'fullscreen']
],
elementPathEnabled: false,
enableContextMenu: false,
autoClearEmptyNode: true,
wordCount: false,
imagePopup: false,
autotypeset: {indent: true, imageBlockLine: 'center'}
});
ue.ready(function () {
ue.execCommand('serverparam', '_token', '{{ csrf_token() }}');
});
EOT;
return parent::render();
}
}
- 增加视图文件
resources/views/admin/uEditor.blade.php
<div class="form-group {!! !$errors->has($errorKey) ?: 'has-error' !!}">
<label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>
<div class="col-sm-8">
@include('admin::form.error')
{{-- 这个style可以限制他的高度,不会随着内容变长 --}}
<textarea type='text/plain' style="height:400px;" id='ueditor' id="{{$id}}" name="{{$name}}" placeholder="{{ $placeholder }}" {!! $attributes !!} class='ueditor'>
{!! old($column, $value) !!}
</textarea>
@include('admin::form.help-block')
</div>
</div>
{{-- 注意:如果你实用script标签有一些奇怪的问题,更换textarea就可以解决了。 --}}
- 然后注册进laravel-admin,在
app/Admin/bootstrap.php
中添加以下代码:
<?php
/**
*
*/
use App\Admin\Extensions\Form\uEditor;
use Encore\Admin\Form;
Form::extend('ueditor', uEditor::class);
//Encore\Admin\Form::forget(['map', 'editor']);
- 再控制器的
form()
里面调用
$form->ueditor('content', '内容')->rules('required');
9 Comments
这个网站没有收藏功能吗?
点击「这篇文章对我很有帮助」就等同于收藏功能
学习啦
为什么我会出现这个问题? Missing argument 1 for Illuminate\Support\ServiceProvider::__construct(), called in
不明白你的问题,请描述清楚一些
use Mrgoon\AliSms;
是要这样引用一下吗,报错说没找到这个类
求帮解决
$aliSms = new \Mrgoon\AliSms\AliSms();
我是laravel5.6,通过上述代码引用成功,但不能明白原理
我的短信服务报:MissingAccessKeyId AccessKeyId is mandatory for this action. HTTP Status: 400 RequestID: 40A084FA-EA60-4828-9C97-1CDA6F6E2BBE 这个错误。