1. 程式人生 > >在 Laravel 5.5+ 應用中配置使用阿里雲提供的簡訊服務及檔案儲存服務(OSS)

在 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. 使用
<?php
/**
 * Created by PhpStorm.
 * User: zoe
 * Date: 2018/7/18
 * Time: 下午4:56
 */
namespace App\Http\Controllers\api;

use App\Http\Controllers\Controller;
use Mrgoon\AliSms\AliSms;

class SendMsgController extends Controller {
    public function sendMsg() {
        $aliSms = new AliSms();
        $response = $aliSms->sendSms('12345678910', 'SMS_139970365', ['code'=> 'hehe', 'product' => 'hehe']);    //code不能少
        print_r($response);
    }
}

對於laravel引入的擴充套件庫,其名稱空間是怎麼確認的,還有待學習,哈哈

非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');

 

參考連結:

https://laravelacademy.org/post/9502.html