Articoli

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.

Articoli correlati
php artisan make:middleware SecondMiddleware

5 : aggiungiamo il seguente codice nel metodo handle del SecondMiddleware appena creato in app/Http/Middleware .

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.
<?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.

VerbPathActionRoute Name
GET/myindexmy.index
GET/my/createcreatemy.create
POST/mystoremy.store
GET/my/{my}showmy.show
GET/my/{my}/editeditmy.edit
PUT/PATCH/my/{my}updatemy.update
DELETE/my/{my}destroymy.destroy

5 – Prova a eseguire gli URL mostrati nella tabella seguente.

URLDescrizioneuscita
http://localhost:8000/myEsegue il metodo index di MyController.phpindex
http://localhost:8000/my/createEsegue il metodo create di MyController.phpcreare
http://localhost:8000/my/1Esegue il metodo show di MyController.phpshow
http://localhost:8000/my/1/editEsegue il metodo edit di MyController.phpedit

Ercole Palmeri

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

Articoli recenti

Amazon lancia nuovi corsi di formazione gratuiti sull’intelligenza artificiale generativa

L'iniziativa "AI Ready" di Amazon, offre lezioni online per sviluppatori e altri professionisti tecnici, nonché per studenti delle scuole superiori…

29 Novembre 2023

Cos’è l’intelligenza artificiale generativa: come funziona, vantaggi e pericoli

L’intelligenza artificiale generativa è l’argomento di discussione tecnologico più caldo del 2023. Cos’è l’intelligenza artificiale generativa, come funziona e di…

28 Novembre 2023

Rainbow, la soluzione di telefonia e collaborazione basata su cloud di Alcatel-Lucent Enterprise, ottiene la prestigiosa certificazione CSPN da ANSSI

Alcatel-Lucent Enterprise è orgogliosa di annunciare che la sua piattaforma di collaborazione, Rainbow™ by Alcatel-Lucent Enterprise ha ottenuto la Certificazione…

28 Novembre 2023

BYD arriva a quota 6 milioni di veicoli a nuova energia prodotti

BYD ha centrato un risultato storico: sei milioni di veicoli a nuova energia usciti dalla catena di montaggio dello stabilimento…

28 Novembre 2023

Veracode rivoluziona la sicurezza cloud-native con un duo dinamico: DAST Essentials e Veracode GitHub App

Il leader della sicurezza nell'ambito dei software intelligenti presenta una difesa unificata contro le minacce dalla programmazione al cloud in…

28 Novembre 2023

Il software di finanza autonoma di HighRadius riceve il sesto brevetto IA per la funzionalità di acquisizione di dati da documenti

HighRadius ha creato oltre 25 brevetti registrati e in corso di registrazione; quello più recente è stato concesso per modelli…

28 Novembre 2023

Reply si aggiudica due AWS Partner Awards 2023: System Integrator Partner of the Year EMEA e Energy and Utilities Partner of the Year Global

Reply è stata premiata come System Integration Partner of the Year EMEA e Industry Partner of the Year Energy and…

28 Novembre 2023

Dialogare con Luigi Einaudi oggi è possibile, grazie all’intelligenza artificiale

Fondazione Einaudi, Fondazione Compagnia di San Paolo e Reply insieme per rendere l’eredità culturale di Luigi Einaudi accessibile a tutti.…

28 Novembre 2023

bp sceglie AssetWise Lifecycle Information Management e AssetWise Reliability come standard per la gestione delle informazioni e l’integrità degli asset

Per un approccio a livello aziendale alla gestione delle informazioni sugli asset in parallelo con la gestione dell'integrità strutturale e…

27 Novembre 2023

Innovazioni basate sull’intelligenza artificiale all’#RSNA23 che consentono agli operatori sanitari di concentrarsi sulla cura dei pazienti

Le nuove innovazioni aiutano gli ospedali e i sistemi sanitari a fornire costantemente ai pazienti cure accessibili e di alta…

26 Novembre 2023