美文网首页
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