Refactoring to MVC
We gaan onze code een beetje opnieuw bouwen, dit heet ook wel refacturing. Het doel is dat we onze code opschonen en het MVC model wat duidelijker vorm gevne in onze code. Hierdoor wordt code overzichtlijker en sluiten we beter aan bij de Laravel standaard.
Routing and controllers
Tot nu te hebben we onze routing opgezet en in de routing hebben we tevens de controls opgenomen. Bijvoobeeld bij het toevoegen van een nieuwe link hebben we alle code in de routing file gestopt. Dit werkt maar is op den duur, als onze code meer wordt niet meer overzichtelijk. In onze routing houden we alleen de routing bij en de control-code gaagaat in een aparte file. Hiermee gaan we een duidelijk onderscheid maken tussen de routing en de controls.
We kunnen al onze CRUD routes voor het object Link in één keer aanpassen met één route:
Route::resource('link'links','LinkController');
Deze ene regel zorgt voor routes naar alle CRUD-functies:
Method | URI | Action (function in controller) | functie |
GET | / |
index | standaard pagina voor indes |
GET | / |
create | create form |
POST | / |
store | create form post |
GET | / |
show (één item) | laat één item zien |
GET | / |
edit | edit form |
PUT/PATCH | / |
update | edit form post |
DELETE | / |
destroy | delete |
(zie ook https://laravel.com/docs/6.x/controllers)
In de directory app/http/Controllers staan al onze controlers en we maken ene nieuwe file en noemen die LinkController.php
De routing zal naar deze file verwijzen. In deze php file maken we de volgende 'standaard' code:
<?php
namespace App\Http\Controllers;
use App\Link;
use Illuminate\Http\Request;
class LinkController extends Controller
{
protected function index (){
//
}
protected function create(){
//
}
public function edit($id){
//
}
public function show($id){
//
}
public function update(Request $request, $id) {
//
}
protected function store(Request $request){
//
}
protected function destroy($del_id){
//
}
}
Nu hebben we alle standaard methods voor de routing, we moeten nu alleen de code nog per functie invullen.