Laravel Requests
Accessing Request
للحصول على مثيل لطلب HTTP الحالي عبر حقن التبعية (dependency injection) ، يجب عليك كتابة Illuminate \ Http \ Request في method وحدة التحكم.
سيتم حقن مثيل الطلب الوارد تلقائيًا بواسطة حاوية الخدمة (service container)، كالتالى:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller {
public function store(Request $request){
$name = $request->input('name');
}
}
Accessing Request Via Route Closures
يمكنك أيضًا كتابة hint لفئة Illuminate \ Http \ Request في Closure المسار، ستقوم حاوية الخدمة بحقن الطلب الوارد في الـ Closure تلقائيًا عند تنفيذه، كالتالى:
use Illuminate\Http\Request;
Route::get('/', function (Request $request) {
//
});
Retrieving Request Path
تُرجع method الـ path معلومات مسار الطلب، لذلك إذا كان الطلب الوارد موجهًا إلى http://domain.com/users/mohamed، فستُرجع طريقة المسار users/mohamed:
$uri = $request->path();
تُستخدم method الـ is لاسترداد الـ requested URI الذي يطابق النمط المعين المحدد في argument الـ method.
💡 يمكنك استخدام علامة * كحرف بدل عند استخدام هذه الطريقة:
if ($request->is('admin/*')) {
//
}
Retrieving the Request URI
لاسترداد عنوان URL الكامل للطلب الوارد ، يمكنك استخدام methods الـ url أو fullUrl.
ستُرجع method الـ url عنوان URL بدون string الاستعلام ، بينما تتضمن method الـ fullUrl الاستعلام بالكامل وبالـ string:
// Without Query String...
$url = $request->url();
// With Query String...
$url = $request->fullUrl();
Retrieving The Request Method
ستقوم method الـ method بإرجاع فعل HTTP للطلب.
يمكنك استخدام method الـ isMethod للتحقق من تطابق فعل HTTP مع string معينة:
$method = $request->method();
if ($request->isMethod('post')) {
//
}
مثال كامل للتوضيح:-
الخطوة 1: إنشاء Controller جديد تسمى MyUriController:
php artisan make:controller MyUriController -plain
الخطوة 2: بعد إنشاء الـ Controller، أضف التعليمات البرمجية التالية في هذا الملف.
app/Http/Controllers/MyUriController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyUriController extends Controller {
public function index(Request $request) {
// Usage of 'path' method
$path = $request->path();
echo 'My Path Method Is: '.$path;
// Usage of 'is' method
$pattern = $request->is('users/*');
echo 'is Method: '.$pattern;
// Usage of 'url' method
$url = $request->url();
echo 'My URL method Is: '.$url;
}
}
الخطوة3: أضف السطر التالي في ملف app / Http / route.php:
Route::get('/users/mohamed','MyUriController@index');
الخطوة 4: قم بزيارة عنوان الـ URL التالي.
http://localhost:8000/users/mohamed
Final – Output:
My Path Method Is: users/mohamed
is Method: 1
My URL method Is: http://localhost:8000/users/mohamed
Retrieving Input
يمكن استرداد قيم الـ input بسهولة في Laravel.
بغض النظر عن الـ method التي تم استخدامها “get” أو “post” ، ستسترد method الـ Laravel قيم الإدخال لكلتا الطريقتين بنفس الطريقة.
Retrieving All Input Data .1
يمكنك استرداد جميع بيانات الإدخال كمصفوفة array باستخدام method الـ all:
$input = $request->all();
Retrieving Input Value. 2
باستخدام بعض الطرق البسيطة ، يمكنك الوصول إلى كل inputs المستخدم من Illuminate \ Http \ Request الخاص بك دون القلق بشأن أي فعل HTTP تم استخدامه للطلب.
بغض النظر عن فعل HTTP ، يمكن استخدام method الـ input لاسترداد إدخال المستخدم:
$name = $request->input('name');
يمكنك تمرير قيمة افتراضية كـ argument ثانية لطريقة الـ input، سيتم إرجاع هذه القيمة إذا لم تكن قيمة الـ input المطلوبة موجودة في الطلب:
$name = $request->input('name', 'Hamed');
يمكنك استدعاء method الـ input بدون أي arguments لاسترداد جميع قيم الإدخال كـ associative array:
$input = $request->input();
مثال كامل لفهم المزيد عن الطلبات:-
الخطوة 1: قم بإنشاء form للتسجيل ، حيث يمكن للمستخدم تسجيل معلوماته الشخصية وتخزين النموذج فى:
Resources / views / register.php
<html>
<head>
<meta charset="utf-8" />
<title>Form Example</title>
</head>
<body>
<form action = "/user/register" method = "post">
<input type = "hidden" name = "_token" value = "<?php echo csrf_token() ?>">
<div class="container">
<label for="name">Name</label>
<input type = "text" id="name" name = "name" />
<label for="mail">Email</label>
<input type = "email" id="mail" name = "mail" />
<label for="pass">Password</label>
<input type = "password" id="pass" name = "pass" />
<input type = "submit" value = "Register" />
</div>
</form>
</body>
</html>
الخطوة 2: إنشاء وحدة تحكم بإسم UserRegistration:
php artisan make:controller UserRegistration --plain
الخطوة 2:
app / Http / Controllers / UserRegistration.php.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class UserRegistration extends Controller {
public function postRegister(Request $request) {
//Retrieve the 'name' input field
$name = $request->input('name');
echo 'Name Is: '.$name;
//Retrieve the 'Email' input field
$mail = $request->mail;
echo 'Email Is: '.$mail;
//Retrieve the password input field
$password = $request->pass;
echo 'Password Is: '.$password;
}
}
الخطوة 3: أضف السطر التالي في ملف app / Http /routes.php:
Route::get('/register', function() {
return view('register');
});
Route::post('/user/register', array('uses'=>'UserRegistration@postRegister'));
الخطوة 4 – قم بزيارة عنوان URL التالي وسترى نموذج التسجيل، اكتب تفاصيل التسجيل وانقر فوق تسجيل وسوف ترى في الصفحة الثانية التي استرجعناها وعرضنا تفاصيل تسجيل المستخدم:
http://localhost:8000/register
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!