Laravel: Cosa sono i Controller di laravel
Nel framework MVC, la lettera “C” sta per Controllers, e il questo articolo vedremo come usare i Controller in Laravel. Agisce come un traffico diretto tra viste e modelli. In questo articolo vediamo come creare e impostare i controller in Laravel.
Creare un controller
in laravel
Per creare un controller
, dobbiamo aprire il prompt dei comandi o il terminale, in base al sistema operativo che stiamo utilizzando, e digitiamo il seguente comando per creare il controller utilizzando Artisan CLI (Command Line Interface).
php artisan make:controller <controller-name> --plain
Sostituisci <controller-name>
con il nome del tuo controller
. Questo creerà un controller
. Il controller
creato può essere visualizzato in app/Http/Controllers
.
Vedrai che è già stata eseguita una codifica di base per te e puoi aggiungere la tua codifica personalizzata. Il controller
creato può essere chiamato da web.php con la seguente sintassi.
Sintassi
Route::get(‘base URI’,’controller@method’);
Esempio
1 : eseguire il seguente comando per creare MyController
php artisan make:controller MyController
2 – Dopo l’esecuzione riuscita, riceverai il seguente output.
3 – Troveremo il controller creato in app/Http/Controller/MyController.php
con del codice di base già scritto e possiamo fare modifiche in base alle necessità.
Middleware del Controller
Abbiamo già visto il middleware
e possiamo utilizzarlo anche con il controller
. Il middleware
può anche essere assegnato alla route del controller o all’interno del costruttore del controller. È possibile utilizzare il metodo middleware
per assegnare il middleware
al controller
. Il middleware
registrato può anche essere limitato a determinati metodi del controller
.
Assegnazione del middleware alla route
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'UserController@showProfile'
]);
Qui stiamo assegnando il middleware di autenticazione a UserController nel percorso del profilo.
Assegnazione del middleware all’interno del costruttore del controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyController extends Controller {
public function __construct() {
$this->middleware('auth');
}
}
Qui stiamo assegnando il middleware
di autenticazione utilizzando il metodo middleware
nel costruttore MyController .
Si noti che $this->middleware()
funziona solo se lo si assegna nel costruttore. Se chiamiamo $this->middleware()
da un metodo controller specifico, non genererà alcun errore ma il middleware non funzionerà effettivamente.
Questa opzione è valida, ma personalmente preferisco inserire tutti i middleware nelle routes
, perché è più chiaro dove cercare tutti i middleware
.
Esempio
1 – Aggiungiamo le seguenti righe di codice al file routes/web.php e salviamo.
<?php
Route::get('/mycontroller/path',[
'middleware' => 'First',
'uses' => 'MyController@showPath'
]);
2 – Creiamo un middleware
chiamato FirstMiddleware
eseguendo la seguente riga di codice.
php artisan make:middleware FirstMiddleware
3 : aggiungere il seguente codice nel metodo handle del FirstMiddleware
appena creato in app/Http/Middleware .
<?php
namespace App\Http\Middleware;
use Closure;
class FirstMiddleware {
public function handle($request, Closure $next) {
echo '<br>First Middleware';
return $next($request);
}
}
4 – Creiamo un middleware
chiamato SecondMiddleware eseguendo il seguente comando.
php artisan make:middleware SecondMiddleware
5 : aggiungiamo il seguente codice nel metodo handle del SecondMiddleware
appena creato in app/Http/Middleware .
<?php
namespace App\Http\Middleware;
use Closure;
class SecondMiddleware {
public function handle($request, Closure $next) {
echo '<br>Second Middleware';
return $next($request);
}
}
6 : creiamo un controller
chiamato MyController eseguendo la seguente riga.
php artisan make:controller MyController
7 – Dopo l’esecuzione corretta dell’URL, riceverai il seguente output –
8 – Copia il seguente codice nel file app/Http/MyController.php
.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyController extends Controller {
public function __construct() {
$this->middleware('Second');
}
public function showPath(Request $request) {
$uri = $request->path();
echo '<br>URI: '.$uri;
$url = $request->url();
echo '<br>';
echo 'URL: '.$url;
$method = $request->method();
echo '<br>';
echo 'Method: '.$method;
}
}
9 – Ora avviamo il server Web interno di php eseguendo il seguente comando, se non lo hai ancora eseguito.
php artisan serve
10 – Visita il seguente URL.
http://localhost:8000/mycontroller/path
11 – L’output apparirà come mostrato nell’immagine seguente.
Praticamente entrambi i middleware intervengono, ma solo uno
Controller
di restful resource
Spesso durante la creazione di un’applicazione è necessario eseguire operazioni CRUD (Create, Read, Update, Delete)
. Laravel semplifica questo lavoro. Basta creare un controller
e Laravel fornirà automaticamente tutti i metodi per le operazioni CRUD
. Possiamo anche registrare un singolo percorso per tutti i metodi nel file route.php
.
Esempio
1 : creare un controller chiamato MyController
eseguendo il seguente comando.
php artisan make:controller MyController
2 : aggiungere il seguente codice in app/Http/Controllers/MyController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MyController extends Controller {
public function index() {
echo 'index';
}
public function create() {
echo 'create';
}
public function store(Request $request) {
echo 'store';
}
public function show($id) {
echo 'show';
}
public function edit($id) {
echo 'edit';
}
public function update(Request $request, $id) {
echo 'update';
}
public function destroy($id) {
echo 'destroy';
}
}
3 – Aggiungiamo la seguente riga di codice nel file routes/web.php
.
Route::resource('my','MyController');
4 – Ora stiamo registrando tutti i metodi di MyController registrando un controller con resource. Di seguito è riportata la tabella delle azioni gestite dal controller delle risorse.
Verb | Path | Action | Route Name |
---|---|---|---|
GET | /my | index | my.index |
GET | /my/create | create | my.create |
POST | /my | store | my.store |
GET | /my/{my} | show | my.show |
GET | /my/{my}/edit | edit | my.edit |
PUT/PATCH | /my/{my} | update | my.update |
DELETE | /my/{my} | destroy | my.destroy |
5 – Prova a eseguire gli URL mostrati nella tabella seguente.
URL | Descrizione | uscita |
---|---|---|
http://localhost:8000/my | Esegue il metodo index di MyController.php | index |
http://localhost:8000/my/create | Esegue il metodo create di MyController.php | creare |
http://localhost:8000/my/1 | Esegue il metodo show di MyController.php | show |
http://localhost:8000/my/1/edit | Esegue il metodo edit di MyController.php | edit |
Ercole Palmeri