Laravel 5.1
Laravel-excel 2.1.0
barryvdh / laravel-cors 0.8.0
كنت أتوقع أن Laravel-excel يعمل بشكل جيد مع Laravel-cors
يتجاهل laravel-excel ملفات laravel ولا يتم تعيينه في الاستجابة
الرؤوس "Access-Control-Allow-Origin" و "Vary"
في طرق التنزيل والتصدير ، لا يستخدم Laravel-excel Illuminate \ Http \ Response
هذا ما كسر كل شيء؟
قدم طلبًا من www.example-a.com في جافا سكريبت (في حالتي تطبيق angularjs) إلى www.example-b.com (خادم به Laravel + laraver-cors + laravel-excel)
لا تدعم هذه الحزمة استخدام Response ، حيث أن PHPExcel تتعامل مع التنزيل الفعلي. سيكون عليك تمرير الرؤوس بنفسك (المعلمة الثانية)
->download('xls', [yourheader])
من فضلك ، أضف هذا إلى الوثائق.
مرحبًا ، أنا أستخدم Laravel-Excel بالفعل في مشروع Lumen وأحاول تصدير البيانات في ملف Excel وتنزيلها على النحو التالي:
المستخدمون لدي
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
/**
* <strong i="8">@return</strong> \Illuminate\Support\Collection
*/
public function collection()
{
return User::all();
}
}
جهاز التحكم الخاص بي :
public function excel()
{
return Excel::download(new UsersExport(),'users.xlsx');
}
web.php :
$router->get('/download', 'CommunicationController<strong i="17">@excel</strong>');
وعندما أحاول تنفيذ وظيفة excel () ، أتلقى هذا الخطأ
ومع ذلك ، فقد قمت بالفعل بإنشاء CorsMiddleware.php وإضافته في bootstrap / app.php منذ فترة طويلة وتعمل جميع الوظائف الأخرى بشكل جيد جدًا بفضله.
app.php :
$app->middleware([
App\Http\Middleware\CorsMiddleware::class
]);
CorsMiddleware.php :
<?php
namespace App\Http\Middleware;
use Closure;
class CorsMiddleware
{
/**
* Handle an incoming request.
*
* <strong i="30">@param</strong> \Illuminate\Http\Request $request
* <strong i="31">@param</strong> \Closure $next
* <strong i="32">@return</strong> mixed
*/
public function handle($request, Closure $next)
{
$headers = [
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Max-Age' => '86400',
'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With, api_token'
];
if ($request->isMethod('OPTIONS'))
{
return response()->json('{"method":"OPTIONS"}', 200, $headers);
}
$response = $next($request);
foreach($headers as $key => $value)
{
$response->header($key, $value);
}
return $response;
}
}
هل نسيت شيئا؟ أنا عالق في ذلك منذ يوم أمس وأود حقًا مساعدتك: '(
هنا يمكنك مشاهدة إصدارات Lumen التي أستخدمها وأيضًا موقع maatwebsite / excel:
"require": {
"php": ">=7.1.3",
"guzzlehttp/guzzle": "^6.3",
"laravel/lumen-framework": "5.7.*",
"maatwebsite/excel": "^3.1",
"phpoffice/phpspreadsheet": "^1.6",
"vlucas/phpdotenv": "~2.2"
},
شكرا لك!
التعليق الأكثر فائدة
لا تدعم هذه الحزمة استخدام Response ، حيث أن PHPExcel تتعامل مع التنزيل الفعلي. سيكون عليك تمرير الرؤوس بنفسك (المعلمة الثانية)
->download('xls', [yourheader])