لارافيل, Others / 2024-10-18

كل ما تريد معرفتة عن دالة لارافيل redirect بالتفاصيل

كل ما تريد معرفتة عن دالة لارافيل redirect بالتفاصيل

2024-10-18 وقت القراءه : 3 دقائق

جدول المحتويات


تحتوي لارافيل على مجموعة من الدوال الجاهزة التي يمكن إستخدامها أثناء العمل وتعتبر redirect، واحده من أكثر الدوال إستخداماً، في هذه المقالة سيتم الحديث عن كيفية إستخدامها وما هي الخيارات المتاحة لنا عند إستخدامنها لها.


في البداية سأفترض أن لدينا دوال بداخل كنترولر وسنقوم بتحويل المستخدم لأي مكان داخل التطبيق.


التحويل إلى رابط محدد - Laravel Redirect to URL

public function index()
{
    return redirect('welcome');
}

هنا سيتم تحويل المستخدم إلى الرابط www.test.test/welcome ، ونستطيع أيضا تمرير صفحات أخرى كـ parameter 

Route::get('/dashboard', function () {
    return redirect('/home/dashboard');
});
public function dashboard()
{
    return redirect('/home/dashboard');
}


التحويل خطوة للوراء - Laravel Redirect Back

يوجد دول أخرى متاح إستخدامها مع redirect، فإذا أردنا أن يتم إرجاع المستخدم للصفحة السابقة، بإمكاننا إستخدام back

return redirect()->back();

يمكننا إيضا إستخدام

return back();


التحويل إلى route في لارافيل - Laravel Redirect to Route

بعض المطورين وأنا منهم يفضلون إعطاء إسم للمسارات named routes، فماذا لو أردنا أن يتم إعادة توجية المستخدم لقائمة المنشورات بعد أن يتم إضافة منشور جديد

return redirect()->route('posts.index');

كما يمكننا تمرير parameters أخرى ، ولتوضيح ذلك لنفرض أن لدينا رابط يقوم بتحميل صفحة تعديل المقالات

use App\Http\Controllers\PostController;
return redirect()->action([PostController::class, 'index']);

 

بإمكاننا أن يتم إعادة تحويل المستخدم لنفس الصفحة بإستخدام الكود التالي

return redirect()->route('post.edit', ['id' => $post->id]);


التحويل مع إرسال بيانات - Redirect with Data

ببعض الأحيان نريد إعادة توجيه المستخدم لصفحة معينة وإرسال بيانات، وهنا توفر لنا لارافيل دالتين with و withInput :

with

return redirect()->back()->with('success', 'Post saved successfully.');

في الدالة أعلاه سيتم إعادة توجيه المستخدم للصفحة السابقة وإضافة المفتاح success مع قيمة هذا المفتاح، وسيتم إرسالة إلى session flash ويمكننا إستقبالها من خلال إستخدام session

session('success');

كما يمكننا إستخدام أكثر من with 

return redirect()->back()
->with('success', 'Post saved successfully.')
->with('post_id', $post->id);

ولجعل الكود أعلاه أكثر أناقة، وأكثر قابلية للقراءة، يفضل إستخدام مصفوفة بالمعلومات التي نريد إرسالها

$response = [
    'success'   =>  'Post saved successfully.',
    'post_id'   =>  $post->id,
];
return redirect()->back()->with($response);


withInput

تستخدم هذه الدالة عندما نريد إرجاع بيانات إلى فورم معين، 

   $validator= $this->validate($request, [
        'name' => 'required',
    ]);

    if ($validator->fails()) {
        return redirect()->back()->withInput()->withErrors($validator);
    }

وفي ملف blade يمكن إستخدام old($key) لطباعة القيمة

<input name="name" value="{{ old('name') }}">


التحويل لدالة معينة في الكونترولر - Redirect to Controller Action

في لارافيل يمكننا التحويل أيضا إلى دالة داخل الكونترولر مثلها مثل إطار العمل Symfone، ويتم ذلك من خلال دالة action

return redirect()->action([HomeController::class, 'index']);

كما يمكن تمرير بعض المعلمات parameters 

return redirect()->action(
    [PostController::class, 'profile'], ['id' => 1]
);


الخلاصة

هذا ما أعلمة عن عملية redirect، إذا أردت المزيد يمكنك التوجه لموقع لارافيل الرسمي، وإذا كان لديك أي إستفسار بإمكانك إضافته في صندوق التعليقات أدناه.


التعليقات
mohd
منذ 3 سنوات

بارك الله فيك .. جزاك الله كل خير .. أرجو الاستمرار لأني تعلمت الكثير منك ولا زلت كذلك

Taha
منذ 3 سنوات

شكرا جزيلا

إضافة تعليق
Loading...