defaultRoute)) { $this->defaultRoute = $this->getDefaultRoute(); } return request('_redirect') ?? request()->header('referer', admin_route($this->defaultRoute)); } /** * 获取当前管理界面列表页路由 * @return string */ private function getDefaultRoute(): string { $currentRouteName = Route::getCurrentRoute()->getName(); $names = explode('.', $currentRouteName); $name = $names[1] ?? ''; return "{$name}.index"; } /** * 导出CSV * * @param $fileName * @param $items * @param string $module * @return BinaryFileResponse * @throws \Exception */ protected function downloadCsv($fileName, $items, string $module = ''): BinaryFileResponse { $module = $module ?: $fileName; $charset = app()->getLocale() == 'zh-hk' ? 'BIG5' : 'GBK'; if (empty($items)) { throw new \Exception(trans('empty_items')); } if (!str_contains($fileName, '.csv')) { $fileName = $fileName . '-' . date('YmdHis') . '.csv'; } $headers = [ 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Content-type' => 'application/octet-stream', // 'Content-type' => 'text/csv', 'Content-Disposition' => "attachment; filename={$fileName}", 'Content-Transfer-Encoding' => 'binary', 'Expires' => '0', 'Pragma' => 'public' ]; $columns = array_keys($items[0]); foreach ($columns as $index => $column) { $columns[$index] = iconv("UTF-8", "{$charset}//IGNORE", trans("$module.{$column}")); } foreach ($items as $index => $item) { foreach ($item as $field => $value) { $items[$index][$field] = iconv("UTF-8", "{$charset}//IGNORE", $value); } } $filePath = storage_path('app/' . $fileName); $file = fopen($filePath, 'w'); fputcsv($file, $columns); foreach ($items as $item) { fputcsv($file, $item); } fclose($file); return response()->download($filePath, $fileName, $headers); } }