Problema
Vuoi aggiungere middleware alla tua applicazione ma non sai da dove cominciare.
Soluzione
Crea una semplice classe di middleware.
Passaggio 1: crea la classe
Utilizzare Symfony \ component \ httpfoundation \ request;
Usa Symfony \ component \ httpfoundation \ risposta;
Usa Symfony \ component \ httpkernel \ httpkernelinterface;
Class Middleware implementa httpkernelinterface
APP $ protetta;
/**
* Costruttore
*/
funzione pubblica __construct (httpkernelinterface $ app)
$ this-> app = $ app;
/**
* Gestire la richiesta, restituire la risposta
*
* @implements httpkernelinterface :: handle
*
* @param \ symfony \ component \ httpfoundation \ richiesta $ richiesta
* @param int $ type
* @param bool $ catch
* @return \ symfony \ component \ httpfoundation \ risposta
*/
Handle della funzione pubblica (richiesta $ richiesta,
$ type = httpkernelinterface :: master_request, $ catch = true)
// 1) Modifica la richiesta in arrivo se necessario
..
// 2) incatenare il gestore dell'app per ottenere la risposta
$ Response = $ this-> App-> Handle ($ richiesta, $ type, $ catch);
// 3) Modifica la risposta se necessario
..
// 4) Restituisci la risposta
restituire $ risposta;
?>
Passaggio 2 - Registra la classe middleware
È necessario farlo nel metodo Register () di un fornitore di servizi.
App :: middleware ('myapp \ middleware');
In alternativa puoi installare un semplice pacchetto che ho creato che ti consente di registrare il middleware in App/Start/Preboot.PHP.
Vedi i Laravel-Hooks per i dettagli.
Discussione
La classe sopra non fa nulla.
Ma è un buon scheletro per cominciare. Ovviamente, dovrai cambiare lo spazio dei nomi e il nome di classe per adattarsi alla tua applicazione.
Allora potresti voler provare a registrare qualcosa per assicurarti che funzioni. È possibile aggiornare il metodo handle () della tua classe come specificato di seguito.
// nel passaggio n. 1) Modifica la richiesta in arrivo se necessario
// Registra a un file. Dal momento che app/start/globale.PHP non è stato colpito
//ppure la facciata di registro non è ancora impostata su un file. Quindi
// scrivi direttamente a un file.
$ logFile = Storage_path ().'/logs/Laravel.tronco d'albero';
ERROR_LOG ("Middleware Entry \ n", 3, $ logfile);
// nel passaggio n. 3) Modifica la risposta se necessario
// Registra a un file. Siamo sicuri di usare la facciata del registro ora che
// dovrebbe essere impostato in app/start/globale.PHP
Log :: info ("uscita middleware");
Ora puoi esaminare il tuo App/Storage/Logs/Laravel.tronco d'albero
file per vedere che il tuo middleware funziona.