2021-05-17 laravel admin 導出 中文亂碼

網(wǎng)上的解決方案幾乎是使用改源碼, 但是一旦項目進行composer update那修改的東西就沒了
我參考了哈皮人的全棧技術(shù)博客寫了一套通過繼承的解決方案

  1. app/Admin/Extentsions中添加一個自定義導出類
<?php

namespace App\Admin\Extensions;

use Encore\Admin\Grid\Column;
use Encore\Admin\Grid\Exporters\CsvExporter;

class MyCsvExporter extends CsvExporter
{
    //  這個方法照搬自CsvExporter的export方法
    public function export()
    {
        if ($this->callback) {
            call_user_func($this->callback, $this);
        }

        $response = function () {

            $handle = fopen('php://output', 'w');
            $titles = [];

            //  方法中所有的內(nèi)容都沒改, 只有添加了下面一行的代碼
            fputs($handle, chr(0xEF).chr(0xBB).chr(0xBF), 3);
            $this->chunk(function ($collection) use ($handle, &$titles) {
                Column::setOriginalGridModels($collection);

                $original = $current = $collection->toArray();

                $this->grid->getColumns()->map(function (Column $column) use (&$current) {
                    $current = $column->fill($current);
                    $this->grid->columnNames[] = $column->getName();
                });

                // Write title
                if (empty($titles)) {
                    fputcsv($handle, $titles = $this->getVisiableTitles());
                }

                // Write rows
                foreach ($current as $index => $record) {
                    fputcsv($handle, $this->getVisiableFields($record, $original[$index]));
                }
            });
            fclose($handle);
        };

        response()->stream($response, 200, $this->getHeaders())->send();

        exit;
    }
}
  1. app/Admin/bootstrap.php中添加以下代碼
use Encore\Admin\Grid\Exporter;
use App\Admin\Extensions\MyCsvExporter;

Exporter::extend('export', MyCsvExporter::class);
//     export為我設置的別名, 你們可以任意改成其他的

3.在需要的地方使用

        $grid->exporter('export');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栏尚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盒刚,老刑警劉巖争剿,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藐不,死亡現(xiàn)場離奇詭異抡砂,居然都是意外死亡贞奋,警方通過查閱死者的電腦和手機超全,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門咆霜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邓馒,“玉大人,你說我怎么就攤上這事蛾坯」夂ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵脉课,是天一觀的道長救军。 經(jīng)常有香客問我,道長下翎,這世上最難降的妖魔是什么缤言? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮视事,結(jié)果婚禮上胆萧,老公的妹妹穿的比我還像新娘。我一直安慰自己俐东,他們只是感情好跌穗,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著虏辫,像睡著了一般蚌吸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上砌庄,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天羹唠,我揣著相機與錄音,去河邊找鬼娄昆。 笑死佩微,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的萌焰。 我是一名探鬼主播哺眯,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扒俯!你這毒婦竟也來了奶卓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤撼玄,失蹤者是張志新(化名)和其女友劉穎夺姑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互纯,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瑟幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了留潦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只盹。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兔院,靈堂內(nèi)的尸體忽然破棺而出殖卑,到底是詐尸還是另有隱情,我是刑警寧澤坊萝,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布孵稽,位于F島的核電站,受9級特大地震影響十偶,放射性物質(zhì)發(fā)生泄漏菩鲜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一惦积、第九天 我趴在偏房一處隱蔽的房頂上張望接校。 院中可真熱鬧,春花似錦狮崩、人聲如沸蛛勉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诽凌。三九已至,卻和暖如春坦敌,著一層夾襖步出監(jiān)牢的瞬間侣诵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工狱窘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杜顺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓训柴,卻偏偏與公主長得像哑舒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子幻馁,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容