laravel和laravel-admin、EasyWeChat、WangEditor

**このブログでは、主にlaravlとlaravel-adminの使用法、EasyWeChatとlaravelの使用法、laravl-adminバックグラウンドコールを紹介しています。

WangEditorリッチテキストエディタ。

laravelとlaravel-adminの使用について

最初に他のドキュメントを表示するに
は、composer laravelフレームに移動してから、データベースlaravl-adminの公式Webサイトドキュメントをインストールして構成し、laravel-adminフレームワークをインストールするプロセスです。

EasyWeChat
検証トークンの
使用に基づくlaravelWeChatパブリックアカウントの開発についてEasyWeChat \ Factory;
クラスTokenControllerextends Controller
{
public function wxtoken(Request $ request)
{
/ * $ signature = $ request-> input( 'signature');
$ timeout = $ request -> input( 'timestamp');
$ nonce = $ request-> input( 'nonce');
$ echoStr = $ request-> input( 'echostr');
if($ this-> checkSignature($ signature、$ timestamp 、$ nonce)){
ob_end_clean(); //バッファをクリアする必要があります

        return $echoStr;
    } else {
        return 'Token verification failed.';
    }*/
    $options = [
        'app_id'    => '####',
        'secret'    => '###',
        'token'     => 'loveerys',//和公众号后台匹配的token  确保公众号访问 一至
        'aes_key' => '####',
        'log' => [
            'level' => 'debug',
            'file'  => '/tmp/easywechat.log',
        ],
        'oauth' => [
            'scopes'   => ['snsapi_userinfo'],
            'callback' => '/serve',
        ],
    ];

    $app = Factory::officialAccount($options); //调取EasyWeChat公众号类
    $app->server->push(function ($message) {
      //  $message['FromUserName']; // 用户的 openid
        $message_text =Reply::find(1);
        return "$message_text->text";
    });            //自动回复
   /* $message = $app->server->getMessage();
    var_dump($message);exit;*/
    $response = $app->server->serve();
    return $response;

}
/**
 * 微信官方提供的验签方法
 *
 * @param $signature
 * @param $timestamp
 * @param $nonce
 * @return bool
 */
private function checkSignature($signature, $timestamp, $nonce)
{
    $token = 'loveerys';
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);

    if ($tmpStr == $signature) {

        return true;
    } else {
        return false;
    }
}

}

laravlは、WeChatユーザー情報

/アクセス/
パブリック関数test(Request $ request){
$ appid = '##';
$ redirect_uri = urlencode( ' http:// ###。###。#/ mobile / user ');
$ url = " https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_base&state=1#wechat_redirect ";
header( "Location:"。$ url);

}
/*跳转*/
public function  user(){
    $appid = "#####";
    $secret = "##";
    $code = $_GET["code"];
    //access_token
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
    $token =$this->getJson($url);
    //openid
    $oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
    $oauth2 = $this->getJson($oauth2Url);
    $access_token = $token["access_token"];
    $openid = $oauth2['openid'];
    $get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
    $userinfo = $this->getJson($get_user_info_url);
    var_dump($userinfo);exit;
}

パブリック関数getJson($ url){
$ ch = curl_init();
curl_setopt($ ch、CURLOPT_URL、$ url);
curl_setopt($ ch、CURLOPT_SSL_VERIFYPEER、FALSE);
curl_setopt($ ch、CURLOPT_SSL_VERIFYHOST、FALSE);
curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);
$ output = curl_exec($ ch);
curl_close($ ch);
json_decode($ output、true);を返します。
}

Laravel-adminは、テキストと画像をアップロードするためのサードパーティのWangEditorテキストエディタを導入しています。
最初にWangEditorにアクセスして、WangEditorファイルパッケージをダウンロードします。私はwangEditor-3.0.16を使用しています。

ダウンロードしたパッケージをlaravelフレームワークベンダーディレクトリに置きます

次に、damin / create Extensionsフォルダー<?php namespace App \ Admin \ Extensions; use Encore \ Admin \ Form \ Field;クラスWangEditorextends Field { protected $ view = 'admin.wangの下にWangEditor.phpWangEditor.phpの
コンテンツを作成します-編集者';





protected static $css = [
    '/vendor/wangEditor-3.0.16/release/wangEditor.min.css',
];
protected static $js = [
    '/vendor/wangEditor-3.0.16/release/wangEditor.min.js',
];
public function render()
{
    $name = $this->formatName($this->column);

    $this->script = <<<EOT

var E = window.wangEditor
var editor = new E( '#{$ this-> id}');
editor.customConfig.uploadFileName = 'mypic []';
editor.customConfig.uploadImgHeaders = {
'X-CSRF-TOKEN':$( 'input [name = "_ token"]')。val()
}
editor.customConfig.zIndex = 0;
editor.customConfig.uploadImgServer = '/ index.php / uploadFile';
editor.customConfig.onchange = function(html){
$( 'input [name = $ name]')。val(html);
}
editor.customConfig.uploadImgHooks = {
customInsert:function(insertImg、result、editor){
if(typeof(result.length)!= "undefined"){
for(var i = 0; i <= result.length-1; i ++){
var j = i;
var url = result [i] .newFileName;
insertImg(url);
}
toastr.success(result [j] ['info']);
}
switch(result ['ResultData']){
ケース6:
toastr.error( "最大4つの画像をアップロードできます");
break;
ケース5:
toastr。 error( "ファイルを選択してください");
break;
ケース4:
toastr.error( "アップロードに失敗しました");
break;
ケース3:
toastr.error(result ['info']);
break;
ケース2:
toastr.error ( "ファイルタイプが不正です");
break;
ケース1:
toastr.error(result ['info']);
break;
}
}
}
editor.create();
EOT;
return parent :: render();
}
}
注:
Route :: post( '/ uploadFile'、[UploadsController :: class、 'uploadImg ']); //ルートが構築された後に画像をアップロードし、テキストエディタを作成して画像をアップロードします

http / controller /の下にUploadsControllerを作成し、大文字と小文字を区別します

<?php
名前空間App \ Http \ Controllers;
Illuminate \ Http \ Requestを使用します;

class UploadsController extends Controller
{
public function uploadImg(Request $ request)
{

    $file = $request->file("mypic");

    if (!empty($file)) {
        foreach ($file as $key => $value) {
            $len = $key;
        }
        if ($len > 25) {
            return response()->json(['ResultData' => 6, 'info' => '最多可以上传25张图片']);
        }
        $m = 0;
        $k = 0;
        for ($i = 0; $i <= $len; $i++) {
            // $n 表示第几张图片
            $n = $i + 1;
            if ($file[$i]->isValid()) {
                if (in_array(strtolower($file[$i]->extension()), ['jpeg', 'jpg', 'gif', 'gpeg', 'png'])) {
                    $picname = $file[$i]->getClientOriginalName();//获取上传原文件名
                    $ext = $file[$i]->getClientOriginalExtension();//获取上传文件的后缀名
                    // 重命名
                    $number = mt_rand(1000000000,9999999999);
                    $filename = time() .$number . "." . $ext;

                    if ($file[$i]->move("uploads/images", $filename)) {
                        $newFileName = '/' . "uploads/images" . '/' . $filename;
                        $m = $m + 1;
                        // return response()->json(['ResultData' => 0, 'info' => '上传成功', 'newFileName' => $newFileName ]);
                    } else {
                        $k = $k + 1;
                        // return response()->json(['ResultData' => 4, 'info' => '上传失败']);
                    }
                    $msg = $m . "张图片上传成功 " . $k . "张图片上传失败<br>";
                    $return[] = ['ResultData' => 0, 'info' => $msg, 'newFileName' => $newFileName];
                } else {
                    return response()->json(['ResultData' => 3, 'info' => '第' . $n . '张图片后缀名不合法!<br/>' . '只支持jpeg/jpg/png/gif格式']);
                }
            } else {
                return response()->json(['ResultData' => 1, 'info' => '第' . $n . '张图片超过最大限制!<br/>' . '图片最大支持2M']);
            }
        }
    } else {
        return response()->json(['ResultData' => 5, 'info' => '请选择文件']);
    }
    return $return;
}

}

おすすめ

転載: blog.51cto.com/kangjunfei/2548248