درخواست های 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();