在 Laravel 5.5+ 应用中配置使用阿里云提供的短信服务及文件存储服务(OSS)


配置短信服务

基于Laravel框架的使用方法

  1. 安装
composer require mrgoon/aliyun-sms dev-master
  1. config/app.php中添加如下代码
'providers' => [

    //......此处省略大量代码

    /**
     * 阿里云短信
     */
    Mrgoon\AliSms\ServiceProvider::class,
],

//同时,可以选择性添加aliases
'aliases' => [

    //......此处省略大量代码

    /**
     * 阿里云短信
     */
    'AliSms'=>Mrgoon\AliSms\ServiceProvider::class,
],
  1. 添加系统服务
php artisan vendor:publish
#这里要选择对应的编号
  1. 上一步会新增config/aliyunsms.php 文件
'access_key'        => env('ALIYUN_ACCESSKEYID'), // accessKey
'access_secret'     => env('ALIYUN_ACCESSKEYSECRET'), // accessSecret
'sign_name'         => env('ALIYUN_SMS_SIGN_NAME'), // 签名
  1. .env文件中添加环境变量:
ALIYUN_ACCESSKEYID=your access key
ALIYUN_ACCESSKEYSECRET=your secret key
ALIYUN_SMS_SIGN_NAME=sign name
  1. 使用
$aliSms = new AliSms();
$response = $aliSms->sendSms('phone number', 'SMS_code', ['name'=> 'value in your template']);
//dump($response);

非laravel框架的使用方法

  1. 加载方式通过composer,不变
  2. 使用样例代码如下:
$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

  1. 安装
composer require jacobcyl/ali-oss-storage
  1. config/app.php中添加如下代码
'providers' => [

    //......此处省略大量代码

    /**
     * 阿里云OSS
     */
    Jacobcyl\AliOSS\AliOssServiceProvider::class,
],

//同时,可以选择性添加aliases
'aliases' => [

    //......此处省略大量代码

    /**
     * 阿里云OSS
     */
    'AliOSS'=>Jacobcyl\AliOSS\AliOssServiceProvider::class,
],
  1. 编辑配置文件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,
        ],

    ],
  1. .env文件中添加环境变量:
ALIYUN_ACCESSKEYID=your access key
ALIYUN_ACCESSKEYSECRET=your secret key
ALIYUN_BUCKET=your bucket
ALIYUN_ENDPOINT=your endpoint

配置ueditor + OSS

  1. 安装
composer require ilimpid/laravel-u-editor
  1. config/app.php中添加如下代码
'providers' => [

    //......此处省略大量代码

    /**
     * 百度编辑器
     */
    Stevenyangecho\UEditor\UEditorServiceProvider::class,
],

//同时,添加aliases
'aliases' => [

    //......此处省略大量代码

    /**
     * 百度编辑器
     */
    'UEditor'=>Stevenyangecho\UEditor\UEditorServiceProvider::class,
],
  1. 添加系统服务
php artisan vendor:publish
  1. 上一步会新增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}", 
],
  1. .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 使用

  1. 增加组件文件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();
    }
}
  1. 增加视图文件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就可以解决了。 --}}
  1. 然后注册进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']);
  1. 再控制器的form()里面调用
$form->ueditor('content', '内容')->rules('required');

点赞 取消点赞 收藏 取消收藏

<< 上一篇: 【深圳福田】招聘PHP工程师,有Laravel基础,发展快,8-15k

>> 下一篇: 用 PHP 开发以太坊的教程