Laravel-excel: [рдмрдЧ] рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ (cors)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдирд╡ре░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Maatwebsite/Laravel-Excel

рдкреИрдХреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг, рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг

рд▓рд╛рд░реНрд╡рд╛ 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])

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 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>');

рдФрд░ рдЬрдм рдореИрдВ рдПрдХреНрд╕реЗрд▓ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ

image

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ 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"
    },

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

wwendorf picture wwendorf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dr3ads picture dr3ads  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thearabbit picture thearabbit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ellej16 picture ellej16  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kurianic picture kurianic  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ