This content originally appeared on DEV Community and was authored by Muhammad Iqbal
Controllers pada Laravel digunakan untuk mengatur logika aplikasi dan menangani permintaan HTTP. Mereka memisahkan logika aplikasi dari tampilan dan data, sehingga membuat kode lebih terstruktur dan mudah di-maintain. Berikut adalah beberapa kegunaan utama Controllers pada Laravel:
A. Mengelola Logika Aplikasi:
- Mengatur logika aplikasi dan menangani permintaan HTTP yang masuk.
- Mengelompokkan fungsionalitas terkait dalam satu kelas.
class UserController extends Controller
{
public function show($id)
{
$user = User::find($id);
return view('user.profile', ['user' => $user]);
}
}
B. Memisahkan Logika dari Tampilan:
- Memisahkan logika aplikasi dari tampilan (view) untuk menjaga kode tetap bersih dan terorganisir.
Route::get('/user/{id}', [UserController::class, 'show']);
C. RESTful Controllers:
- Laravel menyediakan cara mudah untuk mengimplementasikan RESTful controllers dengan metode bawaan seperti
index
,create
,store
,show
,edit
,update
, dandestroy
.
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return view('posts.index', ['posts' => $posts]);
}
public function create()
{
return view('posts.create');
}
public function store(Request $request)
{
$post = new Post;
$post->title = $request->title;
$post->content = $request->content;
$post->save();
return redirect()->route('posts.index');
}
}
D. Route Grouping:
- Mempermudah pengelompokan rute berdasarkan controller untuk mempermudah pengaturan dan pemeliharaan rute.
Route::controller(UserController::class)->group(function () {
Route::get('/users', 'index');
Route::get('/users/{id}', 'show');
Route::post('/users', 'store');
Route::put('/users/{id}', 'update');
Route::delete('/users/{id}', 'destroy');
});
E. Middleware dalam Controller:
- Middleware bisa diterapkan pada controller atau metode spesifik dalam controller untuk logika tambahan seperti autentikasi dan otorisasi.
class AdminController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function dashboard()
{
return view('admin.dashboard');
}
}
F. Dependency Injection:
- Menggunakan dependency injection untuk mendapatkan instansi dari kelas yang dibutuhkan langsung dalam metode controller.
use App\Services\UserService;
class UserController extends Controller
{
protected $userService;
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function index()
{
$users = $this->userService->getAllUsers();
return view('users.index', ['users' => $users]);
}
}
Membuat Controller
Untuk membuat controller baru, gunakan perintah Artisan:
php artisan make:controller UserController
Kesimpulan
Controllers pada Laravel sangat berguna untuk mengelola logika aplikasi, memisahkan logika dari tampilan, dan mengelompokkan fungsionalitas terkait. Mereka membuat kode lebih terstruktur, mudah di-maintain, dan memungkinkan penggunaan fitur-fitur canggih seperti middleware dan dependency injection.
This content originally appeared on DEV Community and was authored by Muhammad Iqbal