рд▓рд╛рд░реНрд╡рд╛ 5.1
рд▓рд╛рд░реНрд╡рд╛-рдПрдХреНрд╕реЗрд▓ 2.1.0
barryvdh/laravel-cors 0.8.0
рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд▓рд╛рд░реНрд╡рд╛-рдПрдХреНрд╕реЗрд▓ рд▓рд╛рд░реНрд╡рд╛-рдХреЙрд░реНрд╕ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд▓рд╛рд░реНрд╡рд╛-рдПрдХреНрд╕реЗрд▓ рд▓рд╛рд░реНрд╡рд╛-рдХреЙрд░реНрд╕ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рд╢реАрд░реНрд╖рд▓реЗрдЦ "рдкрд╣реБрдВрдЪ-рдирд┐рдпрдВрддреНрд░рдг-рдЕрдиреБрдорддрд┐ рджреЗрдВ-рдЙрддреНрдкрддреНрддрд┐" рдФрд░ "рднрд┐рдиреНрди"
рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд▓рд╛рд░реНрд╡рд╛-рдПрдХреНрд╕реЗрд▓ рдЗрд▓реНрдпреВрдорд┐рдиреЗрдЯ\Http\Response рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдпрд╣реА рд╕рдм рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ?
www.example-a.com рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ angularjs рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рд╕реЗ www.example-b.com (рд▓рд╛рд░рд╡реЗрд▓ + рд▓рд╛рд░реНрд╡рд╛рд░-рдХреЙрд░реНрд╕ + рд▓рд╛рд░рд╡реЗрд▓-рдПрдХреНрд╕реЗрд▓ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░) рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред
рдпрд╣ рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PHPExcel рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╣реЗрдбрд░ рд╕реНрд╡рдпрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рджреВрд╕рд░рд╛ рдкрд░рдо)
->download('xls', [yourheader])
рдХреГрдкрдпрд╛, рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдирдорд╕реНрддреЗ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реБрдореЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рд╛рд░рд╡реЗрд▓-рдПрдХреНрд╕реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдПрдХреНрд╕реЗрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдореЗрд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдпрд╛рдд :
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>');
рдФрд░ рдЬрдм рдореИрдВ рдПрдХреНрд╕реЗрд▓ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ CorsMiddleware.php рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк/рдРрдк.php рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдРрдк.php :
$app->middleware([
App\Http\Middleware\CorsMiddleware::class
]);
рдХреЙрд░реНрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░.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;
}
}
рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛? рдореИрдВ рдХрд▓ рд╕реЗ рдЗрд╕ рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдБ рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдЪрд╛рд╣рддрд╛ рд╣реВрдБ :'(
рдпрд╣рд╛рдВ рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реБрдореЗрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ/рдПрдХреНрд╕реЗрд▓ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
"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"
},
рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ PHPExcel рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╣реЗрдбрд░ рд╕реНрд╡рдпрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рджреВрд╕рд░рд╛ рдкрд░рдо)
->download('xls', [yourheader])