Controllers

(Laravel)

Dagens första föreläsning

Gå igenom C:et i MVC igen. Vi skall tillsammans försöka förstå vilken roll en Controller har och vad man kan göra med den.

Innehåll:

  • Ansvarsfördelning - vad får en Controller göra?
  • Hur gör den det?
  • Hur gör man det med Laravel och Artisan?

Ansvarsfördelning

Controllern kan sägas vara navet eller samordnaren i er applikation. Utan en controller så händer ingenting. Controllerns uppgift är att gå igenom eventuell data som kommer in (tex GET eller POST) och utifrån den datan bestämma vad som skall hända.

Controllern anropar sedan lämpliga parter som vet hur detta skall göras.

 

Exempel

Scenario: Data skickas in via POST till /customers. Controllern avgör att data skall sparas och anropar lämplig modell för att spara datan. Controllern dirigerar sedan vidare till en annan route.

 

Scenario: En GET-request skickas till /customers.
Controllern avgör att alla customers skall visas och anropar modellen för att hämta datan. Controllern skickar sedan vidare datan till lämplig vy för rendering.

Hur?

En av grundprinciperna är att en Controller i princip inte får veta hur någonting fungerar eller görs utan skall bara avgöra vad som behöver göras.

Det som behöver göras utförs sedan av andra saker som tex modeller eller 3:e parts bibliotek. Controllern är en av få delar i din applikation som får hantera GET- och POST-data direkt. Allting annat bör antingen få datan skickad till sig via en Controller eller annan part.

Controllers i Laravel

https://laravel.com/docs/5.5/controllers

Controllers lever i app/Http/Controllers. För att göra en ny Controller:

// Ger dig en tom controller
php artisan make:controller CustomerController

// Ger dig en resource controller
php artisan make:controller CustomerController --resource

// I routes/web.php kan du sedan skriva
Route::resource('customers', 'CustomerController');

// Binda en controller till en model automatiskt
php artisan make:controller CustomerController --resource --model=Customer

Exempel

Scenario: Data skickas in via POST till /customers. Controllern avgör att data skall sparas och anropar lämplig modell för att spara datan. Controllern dirigerar sedan vidare till en annan route.

 

Scenario: En GET-request skickas till /customers.
Controllern avgör att alla customers skall visas och anropar modellen för att hämta datan. Controllern skickar sedan vidare datan till lämplig vy för rendering.

Övningar

Controllers(Laravel)

By marcusdalgren

Controllers(Laravel)

  • 182