Shape Shape

Laravel Tutorial #6 : Controller pada Laravel

Shape
Shape
Shape Shape
14 Nov, 2023 159 Laravel

Laravel Tutorial #6 : Controller pada Laravel

img-data

Dalam pengembangan aplikasi web menggunakan Laravel, controller adalah komponen yang sangat penting. Controller bertindak sebagai penghubung antara model dan tampilan (view) dalam pola arsitektur Model-View-Controller (MVC).

Fungsi controller pada Laravel adalah untuk mengelola logika bisnis, menerima input dari pengguna, memanipulasi data, dan memberikan respons ke tampilan. Dalam artikel ini, kita akan menjelajahi secara rinci tentang fungsi controller pada Laravel dan bagaimana penggunaannya dapat membantu kita dalam mengembangkan aplikasi web yang efisien dan terstruktur.

Pertama kali kita perlu untuk membuat file controller kita menggunakan Artisan CLI. Untuk membuat file controller menggunakan Artisan CLI, jalankan perintah berikut

php artisan make:controller ArtikelController -r

Dengan menjalan perintah diatas, file controller kita akan tergenerate secara otomatis. Sebelumnya kita lanjut, mari kita bedah perintah diatas.

  • ArtikelController adalah parameter yang kita berikan sebagai nama dari file controller kita.
  • -r adalah flag yang kita berikan untuk memberitahukan kepada Artisan CLI untuk men-generate template fungsi yang standar pada file controller. Bingung? Mari kita coba membuat file controller baru menggunakan Artisan CLI tanpa flag -r dan menggunakan flag -r.

Berikut adalah file controller yang tergenerate tanpa menggunakan flag -r.

...
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArtikelController extends Controller
{
    //
}

Berikut ada file controller yang tergenerate dengan menggunakan flag -r.

...
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArtikelController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

Bisa kita lihat perbedaannya, dimana pada file controller yang tergenerate menggunakan flag -r terdapat template fungsi. Template fungsi inilah yang nantinya kita isi sesuai dengan implementasi kita. Template fungsi yang tergenerate adalah standar untuk operasi CRUD.

Kemudian kita akan melengkapi template fungsi yang sudah ada. Kita juga akan mengubah kode program pada router kita sehingga router tidak akan mengembalikan data secara langsung melainkan akan mengarahkan request ke controller. Pengolahan request nantinya akan dilakukan oleh controller. Berikut adalah file controller and router seteleh dilengkapi.

...
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Blog;
class ArtikelController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $artikel= Blog::user();
        return view('admin.artikel.index', compact('artikel'));
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.artikel.create');
    }
    /**
     * Store a newly created resource in File.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = Blog::create($request->all());
        return redirect('/artikels')->with('pesan', 'Data Anda Berhasil di Tambahkan');
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = Blog::find($id);
       return view('admin.artikel.show', compact('data'));
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $data = Blog::find($id);
        return view('admin.artikel.edit', compact('data'));
    }
    /**
     * Update the specified resource in File.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
   public function update(Request $request, $id)
{
$data = Blog::find($id);
$data->update($request->all());
return redirect('/artikels')->with('pesan','Data Berhasil Di Update');
}
    /**
     * Remove the specified resource from File.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        Blog::destroy($id);
        return redirect('/artikels')->with('pesan', 'Data Berhasil Dihapus');
    }
}
...
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArtikelController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
Route::get('/artikels/add', 'ArtikelController@create');
Route::get('/artikels', 'ArtikelController@index');
Route::post('/artikels', 'ArtikelController@store');
Route::get('/artikels/{id}', 'ArtikelController@show');
Route::put('/artikels/{id}', 'ArtikelController@update');
Route::delete('/artikels/{id}', 'ArtikelController@destroy');
Route::get('/artikels/edit/{id}', 'ArtikelController@edit');

Dengan perubahan kode program seperti diatas, kita telah memindahkan bisnis logic yang ada pada router ke controller. Hal ini akan membuat setiap komponen mengerjakan tugasnya masing-masing. Dengan memindahkan bisnis logic dari router, kita juga akan mengurangi banyaknya kode program pada file web.php dan separation of concert akan tercapai.

Shape Shape

Tutorial Selengkapnya

Ready to start?

Download our mobile app. for easy to start your course.

Shape
  • Google Play
  • App Store