نسخه:

درخواست های HTTP

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

از طریق نما

نما Request به شما اجازه می دهد تا به درخواست فعلی که در ظرف بسته شده است دسترسی داشته باشید. مثلا:

$name = Request::input('name');

به یاد داشته باشید، اگر در یک فضای نام هستید، باید Request نما را با استفاده از یک use Request; دستور در بالای فایل کلاس خود وارد کنید.

از طریق تزریق وابستگی

برای به دست آوردن نمونه ای از درخواست HTTP فعلی از طریق تزریق وابستگی، باید کلاس را در سازنده یا متد کنترلر خود تایپ کنید. نمونه درخواست فعلی به طور خودکار توسط ظرف سرویس تزریق می شود :

<?php namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
 
class UserController extends Controller {
 
/**
* Store a new user.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$name = $request->input('name');
 
//
}
 
}

اگر روش کنترلر شما نیز انتظار ورودی از یک پارامتر مسیر را دارد، به سادگی آرگومان های مسیر خود را پس از وابستگی های دیگر فهرست کنید:

<?php namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
 
class UserController extends Controller {
 
/**
* Update the specified user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function update(Request $request, $id)
{
//
}
 
}

بازیابی ورودی

بازیابی یک مقدار ورودی

با استفاده از چند روش ساده، می توانید به تمام ورودی های کاربر از Illuminate\Http\Request نمونه خود دسترسی داشته باشید. لازم نیست نگران فعل HTTP مورد استفاده برای درخواست باشید، زیرا ورودی برای همه افعال به یک شکل قابل دسترسی است.

$name = Request::input('name');

بازیابی یک مقدار پیش فرض در صورتی که مقدار ورودی وجود نداشته باشد

$name = Request::input('name', 'Sally');

تعیین اینکه آیا یک مقدار ورودی وجود دارد یا خیر

if (Request::has('name'))
{
//
}

دریافت تمام ورودی برای درخواست

$input = Request::all();

دریافت تنها بخشی از ورودی درخواست

$input = Request::only('username', 'password');
 
$input = Request::except('credit_card');

هنگام کار بر روی فرم هایی با ورودی های "آرایه"، می توانید از نماد نقطه برای دسترسی به آرایه ها استفاده کنید:

$input = Request::input('products.0.name');

ورودی قدیمی

لاراول همچنین به شما این امکان را می دهد که ورودی یک درخواست را در طول درخواست بعدی حفظ کنید. برای مثال، ممکن است لازم باشد پس از بررسی خطاهای اعتبارسنجی، فرم را دوباره پر کنید.

چشمک زدن ورودی به جلسه

این flash روش ورودی فعلی را به جلسه فلش می کند تا در طول درخواست بعدی کاربر از برنامه در دسترس باشد:

Request::flash();

فلش کردن فقط برخی از ورودی های جلسه

Request::flashOnly('username', 'email');
 
Request::flashExcept('password');

فلش و تغییر مسیر

از آنجایی که اغلب می خواهید ورودی را در ارتباط با تغییر مسیر به صفحه قبلی فلش کنید، می توانید به راحتی ورودی های زنجیره ای را به یک تغییر مسیر چشمک زن بزنید.

return redirect('form')->withInput();
 
return redirect('form')->withInput(Request::except('password'));

بازیابی اطلاعات قدیمی

برای بازیابی ورودی فلش شده از درخواست قبلی، از old روش موجود در Request نمونه استفاده کنید.

$username = Request::old('username');

اگر ورودی قدیمی را در قالب Blade نمایش می دهید، استفاده از old کمک کننده راحت تر است:

{{ old('username') }}

بیسکویت ها

تمام کوکی های ایجاد شده توسط فریم ورک لاراول رمزگذاری شده و با یک کد احراز هویت امضا می شوند، به این معنی که اگر توسط مشتری تغییر داده شده باشند، نامعتبر تلقی می شوند.

بازیابی یک مقدار کوکی

$value = Request::cookie('name');

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

کمک cookie کننده به عنوان یک کارخانه ساده برای تولید Symfony\Component\HttpFoundation\Cookie نمونه های جدید عمل می کند. کوکی ها ممکن است Response با استفاده از روش زیر به یک نمونه متصل شوند withCookie :

$response = new Illuminate\Http\Response('Hello World');
 
$response->withCookie(cookie('name', 'value', $minutes));

ایجاد یک کوکی که برای همیشه ماندگار است*

منظور ما از "برای همیشه"، پنج سال است.

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

کوکی های صف

همچنین می‌توانید یک کوکی را «صف» کنید تا به پاسخ خروجی اضافه شود، حتی قبل از ایجاد آن پاسخ:

<?php namespace App\Http\Controllers;
 
use Cookie;
use Illuminate\Routing\Controller;
 
class UserController extends Controller
{
/**
* Update a resource
*
* @return Response
*/
public function update()
{
Cookie::queue('name', 'value');
 
return response('Hello World');
}
}

فایل ها

بازیابی یک فایل آپلود شده

$file = Request::file('photo');

تعیین اینکه آیا یک فایل آپلود شده است

if (Request::hasFile('photo'))
{
//
}

شی ای که توسط file متد برگردانده می شود نمونه ای از Symfony\Component\HttpFoundation\File\UploadedFile کلاس است که SplFileInfo کلاس PHP را گسترش می دهد و روش های مختلفی را برای تعامل با فایل ارائه می دهد.

تعیین اینکه آیا یک فایل آپلود شده معتبر است یا خیر

if (Request::file('photo')->isValid())
{
//
}

انتقال یک فایل آپلود شده

Request::file('photo')->move($destinationPath);
 
Request::file('photo')->move($destinationPath, $fileName);

سایر روش های فایل

روش‌های متنوع دیگری نیز برای UploadedFile نمونه‌ها وجود دارد. برای اطلاعات بیشتر در مورد این روش ها، اسناد API کلاس را بررسی کنید .

اطلاعات درخواستی دیگر

کلاس Request روش های زیادی را برای بررسی درخواست HTTP برای برنامه شما ارائه می دهد و Symfony\Component\HttpFoundation\Request کلاس را گسترش می دهد. برخی از نکات برجسته در اینجا وجود دارد.

بازیابی URI درخواست

$uri = Request::path();

تعیین کنید که آیا درخواست از AJAX استفاده می کند

if (Request::ajax())
{
//
}

بازیابی روش درخواست

$method = Request::method();
 
if (Request::isMethod('post'))
{
//
}

تعیین اینکه آیا مسیر درخواست با یک الگو مطابقت دارد یا خیر

if (Request::is('admin/*'))
{
//
}

URL درخواست فعلی را دریافت کنید

$url = Request::url();