اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بإمكانك التحقق من المعلومات عبر طلبات POST و GET باستخدام الـ "Request" المدمجة، والوصول إلى بيانات الطلب من خلال هذا الكائن وتحليلها للتحقق منها.

وإليك الخطوات للتوضيح:

طلب GET:

للوصول إلى بيانات طلب GET، استخدم الـ "query" المدمجة في كائن الطلب.

// استقبال البيانات من الطلب GET
public function getExample(Request $request) {
    $data = $request->query();
    
    // تحقق من وجود معلومة معينة بالاستعلام الذي تم إرساله
    if ($request->has('key')) {
        // اعمل شيئاً مع المعلومة الموجودة في المفتاح 'key'
    }
    
    // ... تابع باقي المنطق الخاص بك
}

طلب POST:

نستخدم الـ "input" المدمجة في كائن الطلب.

// استقبال البيانات من الطلب POST
public function postExample(Request $request) {
    $data = $request->input();
    
    // تحقق من وجود معلومة معينة بالمتغيرات التي تم إرسالها بالطلب POST
    if ($request->has('key')) {
        // اعمل شيئاً مع المعلومة الموجودة في المفتاح 'key'
    }
    
    // ... تابع باقي المنطق الخاص بك
}

في كلا الحالتين، تستطيع الوصول إلى قيمة معينة من خلال استخدام الدالة "input" مع اسم المفتاح كمعامل.

وإليك مثال للحصول على قيمة معينة من طلب POST:

// استقبال البيانات من الطلب POST
public function postExample(Request $request) {
    $username = $request->input('username');
    $password = $request->input('password');
    
    // ... تابع باقي المنطق الخاص بك
}

 

  • 0
نشر

 

يمكنك التحقق من المعلومات المرسلة عبر طلبات HTTP من خلال استخدام الـ POST و GET وغيرها من الأساليب المتاحة. ولكن دعني اذكر لك الفرق بين request() و $request كمعامل للدالة:

  1. request():

    هو دالة مساعدة (Helper function) تُستخدم لاسترداد البيانات المرتبطة بالطلب الحالي وتعمل كملخص لكائن مبني من فئة Illuminate\Http\Request. يمكنك استخدامها للوصول إلى جميع بيانات الطلب بطرق مختلفة مثل الحصول على قيم الـ GET و POST والبيانات الحالية للجلسة والملفات المرفقة ومعلومات الرأس (Headers) وغيرها.
    واليك هذا المثال
     

    public function someControllerMethod(Request $request)
    {
        $username = $request->input('username');
        $email = $request->input('email');
        // إجراءات أخرى
    }

     

  2. $request كمعامل للدالة:
    هو عبارة عن قيمة تمررها يدويًا كمعامل للدوال (عادةً في وحدات التحكم - Controllers). يمثل $request هنا كائن الطلب (Instance of Illuminate\Http\Request) ويحتوي على نفس المعلومات التي توفرها دالة request().

    use Illuminate\Http\Request;
    
    public function someControllerMethod(Request $request)
    {
        $username = $request->input('username');
        $email = $request->input('email');
        // إجراءات أخرى
    }

يمكنك استخدام أي منهما للقيام بنفس الأشياء والحصول على نفس البيانات المتعلقة بالطلب الحالي. الاختلاف هو في كيفية استدعاءهما فقط. الأول (request()) هو دالة مساعدة متاحة على مستوى التطبيق ويمكن استخدامها في أي مكان، بينما الثاني ($request) يُمرر كمعامل إلى دوال الوحدات التحكم ليتم توفيره من قبل لارافيل بشكل تلقائي عندما تُعرّف الدالة.

ارجو ان تكون الاجابه واضحه وكافيه لمساعدتك.

  • 0
نشر

الفرق الأساسي بين request() و $request في Laravel هو:

request() هي طريقة تُستخدم للحصول على مثيل من كائن Request. يمكن استخدامها داخل الـ controller أو أي مكان آخر للحصول على كائن Request والوصول إلى بيانات الطلب مثل الـ input ، query parameters ، headers الخ.

مثال:

public function store(Request $request) 
{
  $name = request()->input('name'); 
}

$request هو متغير يتم تمريره تلقائيًا إلى وظائف الـ controller في Laravel والذي يحتوي على كائن Request. يمكن استخدامه مباشرة داخل الـ controller للوصول إلى بيانات الطلب.

مثال:

public function store(Request $request)  
{
  $name = $request->input('name');
}

في المثال الأول، نستخدم request() للحصول على كائن Request.

وفي المثال الثاني، نستخدم $request الذي تم تمريره إلى الدالة store() تلقائيًا.

الفرق الرئيسي الآخر بين $request و request() هو مفهوم الحقن التلقائي للتوابع (Dependency Injection).

كما ذكرت، عند استخدام $request فإننا نقوم بحقن كائن Request مباشرة في الدالة الخاصة بنا، مما يؤدي إلى:

  • ربط ضعيف (Loose Coupling) - حيث لا نعتمد مباشرة على أي كلاس محدد في الكود.
  • سهولة الاختبار (Testability) - حيث يمكننا وضع Mock لـ Request في الاختبارات.

بينما عند استخدام request() فإننا نعتمد مباشرة على Laravel Facade وهذا يجعل التعامل مع الاختبارات أكثر صعوبة.

إذاً كما ذكرت، من الأفضل استخدام $request عند الإمكان لمزايا الربط الضعيف وسهولة الاختبار.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...