Route - Introductie
MVC is in beginsel nooit geschreven voor webpagina's. Webpagina's waren nog helemaal niet in beeld toen het MVC model werd ontwikkelt. Het is geschreven voor gewone standaard applicaties. Deze dwingen vaak af welke acties een gebruiker kan doen. Het is dan vaak niet mogelijk om ineens naar een heel ander deel te springen.
Een webpagina heeft deze vrijheden wel. Een gebruiker kan bovenin de URL balk een ander adres ingegeven (een andere webpagina) en zal dan deze de andere pagina krijgen. Of met een bookmark direct naar een pagina springen waar die eerder is geweest.
Het afvangen van deze willekeurige opdrachten staat niet in het MVC model. Daarvoor heeft Laravel een uitbreiding gemaakt. De Routes regelen dat .
Een Route is heel eenvoudig. De gebruiker geeft de naam van de pagina in die moet worden getoond en de route zal het onderdeel in de Controller starten welke die pagina zal tonen.
Voorbeeld
De basis van de website is altijd gelijk. Dat is de gangbare naam http://www.punthooft.nl
Voor de Route is het belangrijk wat erachter komt. Dat staat gescheiden met een slash (/)
http://www.punthooft.nl/products
Heeft heeft iemand de website aangeroepen en geeft als Route mee /products. In de Route file zal dit worden herkend en dan zal in de ProductController de methode index worden gestart. Deze kan dan alle producten ophalen in het Model en die in de View laten zien. Code in de Route:
Route::get('/products', [ProductController::class, 'index'])
Als we dan in de ProductController gaan kijken dan zien we een regel waarin we alle producten opvragen (uit het model). Deze zetten we even tijdelijk in een variable $products. Dit is een lijst (array).
Daarna geven we de View opdracht om de View met de naam product.overview te openen en geven de $products lijst mee.
public function index()
{
 $products = Product::all();
 return view('product.overview',compact('products'));
}
Als een gebruiker geen Route meegeeft, dan kunnen we dat ook afvangen.
http://www.punthooft.nl
Dan openen we in de MainController de method index. Deze toont dan bijvoorbeeld een welkomsscherm of een login scherm.
Route::get('/', [MainController::class, 'index'])