Laravel Route Model Binding

đ Route Model Binding āĻā§?
Route Model Binding āĻšāϞ⧠Laravel-āĻāϰ āĻāĻāĻāĻŋ āĻĢāĻŋāĻāĻžāϰ, āϝāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻŋ āϰāĻžāĻāĻā§ āĻĨāĻžāĻāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻĄā§āϞ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ Post āĻŽāĻĄā§āϞ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻĒāύāĻŋ /posts/{id} āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻā§āύ⧠āĻĒā§āϏā§āĻ āĻĻā§āĻāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠āĻāĻā§āϰ āĻŽāϤ⧠āĻāϰ⧠āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ Post::find($id) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤ Laravel āύāĻŋāĻā§ āĻĨā§āĻā§āĻ {post} āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻ
āύā§āϝāĻžāϝāĻŧā§ Post āĻŽāĻĄā§āϞ āĻĨā§āĻā§ āϰā§āĻāϰā§āĻĄ āĻā§āĻāĻā§ āĻāύ⧠āĻĻā§āϝāĻŧāĨ¤
â āĻā§āύ Route Model Binding āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
Code Clean āĻšā§ â āĻāĻŽ āĻā§āĻĄā§ āĻŦā§āĻļāĻŋ āĻāĻžāĻāĨ¤
Error āĻāĻŽ āĻšā§ â āϝāĻĻāĻŋ āϰā§āĻāϰā§āĻĄ āύāĻž āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ, Laravel āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ 404 āϰā§āϏāĻĒāύā§āϏ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
Security āĻŦāĻžā§āĻžā§ â āĻāĻĒāύāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻžāĻā§āĻā§āώāĻŋāϤ āĻŽāĻĄā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻā§āύāĨ¤
đ§ Route Model Binding āĻāϰ āϧāϰāύ
Laravel-āĻ āĻĻā§āĻ āϧāϰāύā§āϰ Route Model Binding āϰā§ā§āĻā§:
1. Implicit Binding (āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ)
Laravel āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ URI āĻāϰ {model} āύāĻžāĻŽ āĻĻā§āĻā§ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻŽāĻĄā§āϞ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰā§āĨ¤
đ āĻāĻĻāĻžāĻšāϰāĻŖ:
// route/web.php
use App\Models\Post;
Route::get('/posts/{post}', function (Post $post) {
return view('posts.show', compact('post'));
});
āĻāĻāĻžāύ⧠{post} URI āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ Post āĻŽāĻĄā§āϞāĻā§ āĻŦā§āĻāĻžāϝāĻŧāĨ¤ Laravel āύāĻŋāĻā§ āĻĨā§āĻā§ $post = Post::findOrFail($id) āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤
āĻļāϰā§āϤ:
{post}āύāĻžāĻŽ āĻāĻŦāĻ$postāĻā§āϝāĻžāϰāĻŋāϝāĻŧā§āĻŦāϞ āύāĻžāĻŽ āĻāĻāĻ āĻšāϤ⧠āĻšāĻŦā§āĨ¤
2. Explicit Binding (āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ)
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻžāĻāϤ⧠URI āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻ
āύā§āϝ āĻā§āύ⧠āĻāϞāĻžāĻŽā§ (āϝā§āĻŽāύ slug) āĻā§āĻāĻ āĻāϰāϤā§, āϤāĻžāĻšāϞ⧠Explicit Binding āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
đ āĻāĻĻāĻžāĻšāϰāĻŖ:
// RouteServiceProvider.php āĻĢāĻžāĻāϞ⧠boot() āĻŽā§āĻĨāĻĄā§
use App\Models\Post;
use Illuminate\Support\Facades\Route;
public function boot()
{
Route::bind('post', function ($value) {
return Post::where('slug', $value)->firstOrFail();
});
}
// route/web.php
Route::get('/posts/{post}', function (Post $post) {
return view('posts.show', compact('post'));
});
āĻāĻāĻžāύ⧠{post} āĻāĻāύ slug āĻāϞāĻžāĻŽā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϏā§āĻ āĻā§āĻāĻāĻŦā§āĨ¤
đĄ Controller āĻ Route Model Binding
Route Model Binding āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻā§āϞā§āĻāĻžāϰ āĻĢāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āύā§, āĻāύā§āĻā§āϰā§āϞāĻžāϰā§āĻ āĻāĻžāĻ āĻāϰā§āĨ¤
Route::get('/posts/{post}', [PostController::class, 'show']);
// PostController.php
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
Laravel āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ $post āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ āĻŽāĻĄā§āϞ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰ⧠āĻĻā§āĻŦā§āĨ¤
â ī¸ āϝāĻĻāĻŋ āϰā§āĻāϰā§āĻĄ āύāĻž āĻŽā§āϞā§?
Laravel āϤāĻāύ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ 404 Not Found āϰā§āϏāĻĒāύā§āϏ āĻĻā§āĻāĻžāĻŦā§āĨ¤ āĻāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāĻā§ āĻāĻŋāĻā§ āĻāϰāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤
đ Middleware āĻŦāĻž Policy āĻāϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ
Route Model Binding āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āϏāĻšāĻā§āĻ āĻāĻĒāύāĻŋ Laravel Authorization (Policy āĻŦāĻž Gate) āĻāϰ āϏā§āĻŦāĻŋāϧāĻž āύāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
public function show(User $user)
{
$this->authorize('view', $user);
}
Laravel Route Model Binding āĻāĻĒāύāĻžāϰ āĻā§āĻĄāĻā§ āĻāϰ⧠āϤā§āϞ⧠āĻā§āϞāĻŋāύ, āϏā§āĻŽāĻžāϰā§āĻ āĻāĻŦāĻ āϏāĻŋāĻāĻŋāĻāϰāĨ¤ āĻāĻĒāύāĻŋ āĻāĻžāĻāϞ⧠Implicit āĻ āĻĨāĻŦāĻž Explicit āϝā§āĻā§āύ⧠āĻāĻāĻāĻŋ āĻŦā§āĻā§ āύāĻŋāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āĻāĻāĻŋāϞāϤāĻž āĻ āύā§āϝāĻžā§ā§ āĻŦā§āĻā§ āύāĻŋāύ āĻāĻĒāύāĻžāϰ āĻāĻĒāϝā§āĻā§ āĻāĻĒāĻžāϝāĻŧāĨ¤




