لا تستخدم الروابط مباشرة، بل يجب إستخدام Route Names

لا تستخدم الروابط مباشرة، بل يجب إستخدام Route Names

2024-09-05 وقت القراءه : 1 دقائق

Bad Practice Example

class ArticleController extends Controller
{
    // ...
    public function update(Article $article)
    {
        $validatedArticle = $request->validate([
            'title' => ['required', 'unique:posts', 'max:255'],
            'body' => ['required'],
         ]);
        $article->update($validatedArticle);
        return redirect('/articles/' . $article->id);
    }
}
// Routes
Route::get('/articles/{article}', [ArticleController::class, 'show']);

What To Do Instead

class ArticleController extends Controller
{
    // ...
    public function update(Article $article)
    {
        $validatedArticle = $request->validate([
            'title' => ['required', 'unique:posts', 'max:255'],
            'body' => ['required'],
        ]);
        $article->update($validatedArticle);
        return redirect(route('articles.show', $article));
        // or
        //return redirect(route('articles.show', $article->id));
    }
}
// Routes
Route::get('/articles/{article}', [ArticleController::class, 'show'])->name('articles.show');


دائما يجب أن نأخذ بعين الإعتبار، بأن الروابط route URLs ممكن أن يطرأ عليها أي تغيير، لذلك فإن إستخدام route URLs ليس فكرة جيده.

توفر لارافيل ما يسمى named routes، بحيث نستطيع تعيين إسم للـ URL، وعند الحاجة لعمل أي تغيير أو تحديث فإنه يمكن لنا القيام بذلك في ملف واحد وهو web.php or api.php.

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