Creare un controller
in laravelPer 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.
Route::get(‘base URI’,’controller@method’);
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à.
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
.
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'UserController@showProfile'
]);
Qui stiamo assegnando il middleware di autenticazione a UserController nel percorso del profilo.
<?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
.
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
.
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
L'iniziativa "AI Ready" di Amazon, offre lezioni online per sviluppatori e altri professionisti tecnici, nonché per studenti delle scuole superiori…
L’intelligenza artificiale generativa è l’argomento di discussione tecnologico più caldo del 2023. Cos’è l’intelligenza artificiale generativa, come funziona e di…
Alcatel-Lucent Enterprise è orgogliosa di annunciare che la sua piattaforma di collaborazione, Rainbow™ by Alcatel-Lucent Enterprise ha ottenuto la Certificazione…
BYD ha centrato un risultato storico: sei milioni di veicoli a nuova energia usciti dalla catena di montaggio dello stabilimento…
Il leader della sicurezza nell'ambito dei software intelligenti presenta una difesa unificata contro le minacce dalla programmazione al cloud in…
HighRadius ha creato oltre 25 brevetti registrati e in corso di registrazione; quello più recente è stato concesso per modelli…
Reply è stata premiata come System Integration Partner of the Year EMEA e Industry Partner of the Year Energy and…
Fondazione Einaudi, Fondazione Compagnia di San Paolo e Reply insieme per rendere l’eredità culturale di Luigi Einaudi accessibile a tutti.…
Per un approccio a livello aziendale alla gestione delle informazioni sugli asset in parallelo con la gestione dell'integrità strutturale e…
Le nuove innovazioni aiutano gli ospedali e i sistemi sanitari a fornire costantemente ai pazienti cure accessibili e di alta…