نسخه:

پاسخ های HTTP

پاسخ های اساسی

رشته های برگشتی از مسیرها

اساسی ترین پاسخ از مسیر لاراول یک رشته است:

Route::get('/', function()
{
return 'Hello World';
});

ایجاد پاسخ های سفارشی

Illuminate\Http\Response با این حال، برای اکثر مسیرها و اقدامات کنترل‌کننده، یک نمونه کامل یا یک نمای را برمی‌گردانید . بازگرداندن یک Response نمونه کامل به شما امکان می‌دهد کد و سرصفحه وضعیت HTTP پاسخ را سفارشی کنید. یک Response نمونه از Symfony\Component\HttpFoundation\Response کلاس به ارث می‌برد و روش‌های مختلفی را برای ساخت پاسخ‌های HTTP ارائه می‌کند:

use Illuminate\Http\Response;
 
return (new Response($content, $status))
->header('Content-Type', $value);

برای راحتی، می توانید از response کمک کننده نیز استفاده کنید:

return response($content, $status)
->header('Content-Type', $value);

توجه: برای فهرست کامل روش‌های موجود ، اسناد API و اسناد Symfony API را Response بررسی کنید .

ارسال دیدگاه در یک پاسخ

اگر نیاز به دسترسی به متدهای کلاس دارید Response ، اما می خواهید یک view را به عنوان محتوای پاسخ برگردانید، می توانید view برای راحتی کار از روش استفاده کنید:

return response()->view('hello')->header('Content-Type', $type);

پیوست کردن کوکی ها به پاسخ ها

return response($content)->withCookie(cookie('name', 'value'));

روش زنجیر زنی

به خاطر داشته باشید که اکثر Response روش ها زنجیره ای هستند و امکان ساخت روان پاسخ ها را فراهم می کنند:

return response()->view('hello')->header('Content-Type', $type)
->withCookie(cookie('name', 'value'));

تغییر مسیرها

پاسخ‌های تغییر مسیر معمولاً نمونه‌هایی از Illuminate\Http\RedirectResponse کلاس هستند و حاوی سرصفحه‌های مناسبی هستند که برای هدایت کاربر به URL دیگر لازم است.

بازگشت یک تغییر مسیر

چندین روش برای تولید یک نمونه وجود دارد RedirectResponse . ساده ترین روش استفاده از redirect روش کمکی است. هنگام آزمایش، تقلید ایجاد یک پاسخ تغییر مسیر معمول نیست، بنابراین استفاده از روش کمکی تقریباً همیشه قابل قبول است:

return redirect('user/login');

بازگشت یک تغییر مسیر با داده های فلش

تغییر مسیر به یک URL جدید و فلش کردن داده ها به جلسه معمولاً همزمان انجام می شود. بنابراین، برای راحتی، می‌توانید یک RedirectResponse نمونه ایجاد کنید و داده‌ها را در یک زنجیره متد برای جلسه فلش کنید:

return redirect('user/login')->with('message', 'Login Failed');

تغییر مسیر به آدرس قبلی

ممکن است بخواهید کاربر را به مکان قبلی خود هدایت کنید، برای مثال، پس از ارسال فرم. با استفاده از روش زیر می توانید این کار را انجام دهید back :

return redirect()->back();
 
return redirect()->back()->withInput();

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده

وقتی redirect کمکی را بدون هیچ پارامتری فراخوانی می‌کنید، یک نمونه از Illuminate\Routing\Redirector برگردانده می‌شود که به شما امکان می‌دهد هر متدی را در Redirector نمونه فراخوانی کنید. به عنوان مثال، برای ایجاد یک RedirectResponse مسیر به نام، می توانید از route روش زیر استفاده کنید:

return redirect()->route('login');

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده با پارامترها

اگر مسیر شما دارای پارامترهایی است، می توانید آنها را به عنوان آرگومان دوم به route متد ارسال کنید.

// For a route with the following URI: profile/{id}
 
return redirect()->route('profile', [1]);

اگر به مسیری با پارامتر "ID" هدایت می‌شوید که از یک مدل Eloquent پر شده است، می‌توانید به سادگی خود مدل را پاس کنید. شناسه به طور خودکار استخراج می شود:

return redirect()->route('profile', [$user]);

بازگشت یک تغییر مسیر به یک مسیر نامگذاری شده با استفاده از پارامترهای نامگذاری شده

// For a route with the following URI: profile/{user}
 
return redirect()->route('profile', ['user' => 1]);

بازگشت یک تغییر مسیر به یک اقدام کنترلر

به طور مشابه با تولید RedirectResponse نمونه‌هایی به مسیرهای نام‌گذاری شده، می‌توانید تغییر مسیرهایی را به اقدامات کنترلر نیز ایجاد کنید :

return redirect()->action('App\Http\Controllers\HomeController@index');

توجه: اگر فضای نام کنترل کننده ریشه را از طریق ثبت نام کرده اید، نیازی به تعیین فضای نام کامل برای کنترلر ندارید URL::setRootControllerNamespace .

بازگشت یک تغییر مسیر به یک کنش کنترلر با پارامترها

return redirect()->action('App\Http\Controllers\UserController@profile', [1]);

برگرداندن یک تغییر مسیر به یک عملکرد کنترلر با استفاده از پارامترهای نامگذاری شده

return redirect()->action('App\Http\Controllers\UserController@profile', ['user' => 1]);

پاسخ های دیگر

کمک response کننده ممکن است برای تولید راحت انواع دیگر نمونه های پاسخ استفاده شود. هنگامی که response کمک کننده بدون استدلال فراخوانی می شود، اجرای قرارداد Illuminate\Contracts\Routing\ResponseFactory برگردانده می شود. این قرارداد چندین روش مفید برای ایجاد پاسخ ارائه می دهد.

ایجاد پاسخ JSON

این json روش به طور خودکار Content-Type هدر را به صورت زیر تنظیم می کند application/json :

return response()->json(['name' => 'Abigail', 'state' => 'CA']);

ایجاد پاسخ JSONP

return response()->json(['name' => 'Abigail', 'state' => 'CA'])
->setCallback($request->input('callback'));

ایجاد پاسخ دانلود فایل

return response()->download($pathToFile);
 
return response()->download($pathToFile, $name, $headers);
 
return response()->download($pathToFile)->deleteFileAfterSend(true);

توجه: Symfony HttpFoundation، که دانلود فایل‌ها را مدیریت می‌کند، باید فایلی که دانلود می‌شود دارای نام فایل ASCII باشد.

ماکروهای پاسخگویی

اگر می‌خواهید یک پاسخ سفارشی تعریف کنید که می‌توانید در مسیرهای مختلف و کنترل‌کننده‌های خود دوباره از آن استفاده کنید، می‌توانید macro از روش پیاده‌سازی استفاده کنید Illuminate\Contracts\Routing\ResponseFactory .

به عنوان مثال، از روش ارائه دهنده خدمات boot :

<?php namespace App\Providers;
 
use Response;
use Illuminate\Support\ServiceProvider;
 
class ResponseMacroServiceProvider extends ServiceProvider {
 
/**
* Perform post-registration booting of services.
*
* @return void
*/
public function boot()
{
Response::macro('caps', function($value)
{
return Response::make(strtoupper($value));
});
}
 
}

تابع macro یک نام را به عنوان اولین آرگومان خود و یک Closure را به عنوان دومین آرگومان خود می پذیرد. هنگام فراخوانی نام ماکرو از یک ResponseFactory پیاده سازی یا response کمک کننده، بسته شدن ماکرو اجرا می شود:

return response()->caps('foo');