DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

CONTROLLER

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]);
       }
   }
Enter fullscreen mode Exit fullscreen mode

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']);
Enter fullscreen mode Exit fullscreen mode

C. RESTful Controllers:

  • Laravel menyediakan cara mudah untuk mengimplementasikan RESTful controllers dengan metode bawaan seperti index, create, store, show, edit, update, dan destroy.
   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');
       }
   }
Enter fullscreen mode Exit fullscreen mode

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');
   });
Enter fullscreen mode Exit fullscreen mode

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');
       }
   }
Enter fullscreen mode Exit fullscreen mode

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]);
       }
   }
Enter fullscreen mode Exit fullscreen mode

Membuat Controller

Untuk membuat controller baru, gunakan perintah Artisan:

php artisan make:controller UserController
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)