在 Laravel 5.5+ 應用中配置使用阿里雲提供的簡訊服務及檔案儲存服務(OSS)
阿新 • • 發佈:2019-01-07
配置簡訊服務
基於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
- 使用
<?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框架的使用方法
- 載入方式通過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');
參考連結: