الكورس

Advertisements

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','[email protected]');

الخطوة 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'=>'[email protected]'));

الخطوة 4 – قم بزيارة عنوان URL التالي وسترى نموذج التسجيل، اكتب تفاصيل التسجيل وانقر فوق تسجيل وسوف ترى في الصفحة الثانية التي استرجعناها وعرضنا تفاصيل تسجيل المستخدم:

http://localhost:8000/register

 

 



الإبلاغ عن خطأ

×

إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:

[email protected]

شكرًا لك على مساعدتك لنا!

Advertisements