美文网首页
laravel-admin使用swoole(laravel-s)

laravel-admin使用swoole(laravel-s)

作者: never615 | 来源:发表于2020-09-03 01:58 被阅读0次
    image.png

    在index(index所在类的完整代码)中添加如下代码:

            if (config('admin.swoole') && request(Exporter::$queryName)) {
                $grid = $this->grid();
                return $grid->handleExportRequest(true);
            }
    

    需要修改laravel-admin的handleExportRequest方法如下:

        /**
         * Handle export request.
         * 
         * 要用pulic方法,因为兼容swoole,需要外部调用
         *
         * @param bool $forceExport
         */
        public function handleExportRequest($forceExport = false)
        {
            if (!$scope = request(Exporter::$queryName)) {
                return;
            }
    
            // clear output buffer.
            if (ob_get_length()) {
                ob_end_clean();
            }
    
            $this->disablePagination();
    
            if ($this->builder) {
                //要加这几行,不然没有过滤器无效了
                call_user_func($this->builder, $this);
            
                return $this->getExporter($scope)->export();
            }
    
            if ($forceExport) {
                return $this->getExporter($scope)->export();
            }
        }
    

    因为我是引入自己修改过的laravel-admin,所以直接修改的源码,如果你是引入原库的话,可以通过反射的方式直接在调用的地方写handleExportRequest方法中的内容。

    1. 然后要自己定义一个导出处理类,核心是不用exit()和用response()->streamDownload()参考:
      https://github.com/never615/laravel-admin-enhance/blob/master/src/Grid/Exporters/CsvExporter.php

    PS. 话说可以的话管理端可以单独做一个项目,不用swoole,一般来说管理端的访问量没有那么大吧。

    相关文章

      网友评论

          本文标题:laravel-admin使用swoole(laravel-s)

          本文链接:https://www.haomeiwen.com/subject/gtagsktx.html