Laravel Tutorial #6 : Controller pada Laravel
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
{
//
}
...
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)
{
//
}
}
...
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.







