Controllers group related request-handling logic into a single class, keeping your route files clean and organised.
php artisan make:controller ArticleController
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\View\View;
class ArticleController extends Controller
{
public function index(): View
{
$articles = Article::latest()->paginate(10);
return view('articles.index', compact('articles'));
}
public function show(Article $article): View
{
return view('articles.show', compact('article'));
}
}
use App\Http\Controllers\ArticleController;
Route::get('/articles', [ArticleController::class, 'index']);
Route::get('/articles/{article}', [ArticleController::class, 'show']);
// Use __invoke for controllers that only handle one action
class ShowDashboard extends Controller
{
public function __invoke(): View
{
return view('dashboard');
}
}
// Route registration
Route::get('/dashboard', ShowDashboard::class);