Skip to main content

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 /linklinks index standaard pagina voor indes
GET /link/links/create create create form
POST /linklinks store create form post
GET /link/links/{id} show (één item) laat één item zien
GET /link/links/{id}/edit edit edit form
PUT/PATCH /link/links/{id} update edit form post
DELETE /link/links/{id} 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.