liziyu 发布的文章

1.首先在http://open-doc.dingtalk.com/microapp/serverapi2/vzzrkv中下载PHP版本SDK。解压后文件目录如图:

111.jpeg

这里我只用到dingtalk中的文件,删除aliyun、QimenCloud目录,保留top目录Autoloader.phpTopSdk.php文件。

2、composer.json中:

"autoload": {
    "classmap": [
        "database"
    ],
    "files":[
        "app/Packages/taobao/TopSdk.php"
    ],
    "psr-4": {
        "App\\": "app/"
    }
 
}

别忘记:然后执行composer dump-autoload

3、执行完毕后,在Controller中就可以直接使用DingTalk SDK了。测试结果如下(注意要加‘ \ ’):

object(DingTalkClient)#276 (9) { ["gatewayUrl"]=> string(34) "http://eco.taobao.com/router/rest" ["format"]=> string(4) "json" ["connectTimeout"]=> NULL ["readTimeout"]=> NULL ["apiCallType"]=> string(4) "oapi" ["httpMethod"]=> string(4) "POST" ["checkRequest"]=> bool(true) ["apiVersion":protected]=> string(3) "2.0" ["sdkVersion":protected]=> string(25) "dingtalk-sdk-php-20161214" }

本文转载:https://blog.csdn.net/xiaoweite1/article/details/106175892

一、若出现Not Found The requested URL解决

public下的.htaccess文件增加:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

二、若出现图片无法上传或访问请这样解决

1、php artisan storage:link但需要在cmd下操作,这时需要在“我的电脑”里增加path环境变量。
112233.png
如下图,找到php对应的目录(如:php.exe所在目录),即:E:\phpstudy\Extensions\php\php7.4.3nts
2、找到“我的电脑”的环境变量增加,如下图:
11223344.png
3、接下来就可以在cmd下执行相关操作了,如下:
223344.png

三、上线后的必要优化,提升访问速度很有效

配置信息缓存 artisan config:cache
路由缓存 artisan route:cache
类映射加载优化 artisan optimize
自动加载优化 composer dumpautoload
使用 Memcached 来存储会话 config/session.php
使用专业缓存驱动器 config/cache.php
数据库请求优化
为数据集书写缓存逻辑
使用即时编译器(JIT),如:HHVM
开启 OpCache
前端资源合并 Elixir

更多优化见:https://learnku.com/laravel/t/47213

1、可以将 Composer 降级到 1.x 版,操作如下:

composer self-update --1

2、如果您需要切换回 Composer 2.x 版,只需键入:

composer self-update --2

3、更多信息
https://5balloons.info/fix-you-are-using-composer-2-some-plugins-seem-to-be-incompatible-with/

1、HTML视图

<div style="display: none;text-align: center"><button type="button" class="layui-btn" id="picker">选择图片</button></div>

2、JS代码

tableSelect.render({
        elem: '#picker',
        checkedKey: 'id',
        searchKey: 'original_name',
        searchPlaceholder: '文件源名称',
        height:'300',
        width:'800',
        table: {
            url: '/manage/uploads/show',
            cols: [[
                { type: 'radio' },
                { field: 'path', title: '缩略图', width:100, templet:'#row-file' },
                { field: 'original_name', title: '文件名' },
                { field: 'path', title: '文件地址' },
                { field: 'extension', width:100, title: '文件类型' },
            ]]
        },
        done: function (elem, data) {
            //console.log(data);
            let NEWJSON = [];
            layui.each(data.data, function (index, item) {
                NEWJSON.push(item.path)
            });
            let template = '<img src="/storage/' + NEWJSON.join(',') + '">';
            let categoryId = data.data[0].category_id;
            if(categoryId == 3) {
                template = '<a href="/storage/' + NEWJSON.join(',') + '">'+ data.data[0].original_name +'</a>';
            }
            if(categoryId == 4) {
                template = '<video src="/storage/' + NEWJSON.join(',') + '" controls="controls"></video>';
            }
            tinyMCE.editors[0].insertContent(template);
        }
    });

3、tableSelect扩展

layui.use(['form', 'jquery', 'tinymce', 'tableSelect'], function() {
    let form = layui.form;
    let $ = layui.jquery;
    let tableSelect = layui.tableSelect;


    tableSelect.render({
    elem: '#picIcon',
    checkedKey: 'id',
    searchKey: 'original_name',
    searchPlaceholder: '文件源名称',
    height:'300',
    width:'800',
    table: {
        url: '/manage/uploads/show',
        cols: [[
            { type: 'radio' },
            { field: 'path', title: '缩略图', width:100, templet:'#row-file' },
            { field: 'original_name', title: '文件名' },
            { field: 'path', title: '文件地址' },
            { field: 'extension', width:100, title: '文件类型' },
        ]]
    },
    done: function (elem, data) {
        let NEWJSON = []
        layui.each(data.data, function (index, item) {
            NEWJSON.push(item.path)
        })
        //elem.val(NEWJSON.join(","));
        $('#icon').val(NEWJSON.join(","))
    }
});

});

TinyMCE代码

tinymce.init({
    selector: '#content',
    language:'zh_CN',
    height:450,

    toolbar: 'filemanager',
    setup: function (editor) {
        editor.ui.registry.addButton('filemanager', { //这里的filemanager与上面toolabar中定义filemanger对应
            title: '文件选择',
            icon: 'duplicate',
            onAction: function () {
                $("#picker").click();
                //editor.windowManager.openUrl({
                //title: '文件选择器',
                //url: '/manage/picker',
                //height: 400,
                //width: 800
                //});
            }
        })
    },
});

4、效果

121.png

221.png