I controller sono le “azioni” che esegue l’applicazione e sono strettamente collegati alle route; il concetto è molto simile a quello di Magento.
I controller sono nella cartella app\Http\Controllers e si possono creare manualmente oppure tramite comando shell.
Un controller si chiamerà sempre NomepluraleController.php; il camel case è necessario.
Per la creazione tramite comando shell bisogna scrivere esempio php artisan make:controller PhotosController. Aggiungendo il parametro --resource al fondo all’interno del controller saranno aggiunti delle funzioni standard:
- index: mostra elenco entità
- create: crea nuova entità
- store
- show: mostra singola entità
- edit
- update
- destroy: cancella entità
Le funzioni store, edit e update francamente mi sembrano molto simili…non credo servano tutte; la differenza è spiegata nella sezione 14 lezione 99 del corso.
Nel route routes\web.php aggiungendo Route::resource('photos', 'PhotosController'); in automatico saranno mappati tutti i metodi presenti nel controller; richiamando la lista delle route con php artisan route:list il risultato sarà come quello sotto.
GET|HEAD | photos | photos.index | App\Http\Controllers\PhotosController@index
POST | photos | photos.store | App\Http\Controllers\PhotosController@store
GET|HEAD | photos/create | photos.create | App\Http\Controllers\PhotosController@create
GET|HEAD | photos/{photo} | photos.show | App\Http\Controllers\PhotosController@show
PUT|PATCH | photos/{photo} | photos.update | App\Http\Controllers\PhotosController@update
DELETE | photos/{photo} | photos.destroy | App\Http\Controllers\PhotosController@destroy
GET|HEAD | photos/{photo}/edit | photos.edit | App\Http\Controllers\PhotosController@edit