Laravel: come creare un’applicazione web completa
Indice del Post...
1. Introduzione
Laravel è un framework PHP open-source che facilita la creazione di applicazioni web robuste e moderne. È noto per la sua sintassi elegante, la struttura flessibile e l’ampia gamma di funzionalità integrate. In questa guida ti guiderò, mostrandoti i passaggi necessari, nel creare un’applicazione web completa utilizzando Laravel.
2. Prerequisiti
Per creare la tua prima applicazione web, seguendo i passaggi spiegati in questo tutorial, avrai bisogno di:
a) PHP 7.4 o superiore
b) Composer
c) Un server web (es. Apache, Nginx)
d) Un database MySQL
Leggi anche: “Come installare Composer su Windows 10 e MAC OS”
3. Installazione di Laravel
Beh installare PHP sul tuo computer penso sia un gioco da ragazzi, infatti basta scaricarti uno dei tanti server web Apache disponibili gratuitamente sul web, uno di questi è XAMPP, non ti rimane che scaricarlo dalla sua pagina ufficiale e installarlo seguendo gli step suggeriti dal wizard di installazione. Per quanto riguarda Laravel il modo più semplice per installarlo è utilizzare Composer. Composer è un gestore di dipendenze per il linguaggio di programmazione PHP. In parole povere, ti aiuta a gestire le librerie e gli strumenti esterni necessari per il tuo progetto in PHP. Quindi, una volta terminata l’installazione di Composer, che puoi effettuare cliccando su questo link, non ti resta che aprire il terminale o il prompt dei comandi e digitare la seguente istruzione:
composer global require laravel/installer
A questo punto puoi creare un nuovo progetto Laravel usando il comando:
laravel new nome_progetto
4. Configurazione del database
Per utilizzare un database MySQL con Laravel, dovrai modificare il file “.env”. Il file “.env” di Laravel si trova nella directory principale del tuo progetto. Apri il file e modifica le seguenti variabili:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=nome_database
DB_USERNAME=nome_utente
DB_PASSWORD=password
Ti ricordo che installando XAMPP non installerai solo PHP e un server web, ma installerai anche MySQL. Pertanto installando XAMPP avrai a disposizione sul tuo computer un server web All-in-One. Terminata l’installazione di XAMPP sarai subito pronto per creare la tua prima applicazione web con Laravel. Per gli scopi di questa guida non è necessario modificare gli attributi del file “.env”, ma sarà possibile farlo aggiornando questo file.
5. Creazione di modelli e controller
Laravel utilizza il pattern MVC (Model-View-Controller) per separare la logica di business, l’interfaccia utente e la presentazione. I modelli rappresentano i dati dell’applicazione, i controller gestiscono la logica di business e le viste definiscono l’interfaccia utente. Considera un aspetto molto importante di Laravel, quando hai creato il progetto con il comando “laravel new nome_progetto” il sistema ha creato un insieme di cartelle, alcune conterranno file di configurazione e installazione altre invece conterranno il file in PHP della tua prima web application. Quindi tutti gli script relativi ai tuoi modelli, alle tue viste e ai tuoi controller andranno a posizionarsi nelle relative cartelle sotto la cartella principale di nome “app”. Ora vediamo come creare il tuo primo modello.
Per creare un nuovo modello, puoi utilizzare il comando “php artisan make:model NomeModello”. Questo comando creerà un file “NomeModello.php” nella cartella “app/models”.
Per creare un nuovo controller, puoi utilizzare il comando “php artisan make:controller NomeController”. Questo comando creerà un file “NomeController.php” nella cartella “app/Http/Controllers”.
Leggi anche: “Realizzare un sito web con PHP e CodeIgniter 4”
6. Definizione delle rotte
Le rotte definiscono le relazioni tra le URL e i controller. In Laravel, le rotte sono definite nel file “routes/web.php”.
Ad esempio, la seguente rotta specifica che la richiesta “GET” per “/” dovrebbe essere gestita dal metodo “index” del controller “HomeController”:
Route::get(‘/’, ‘HomeController@index’);
Più Avanti nella guida vedrai un esempio tipico di una rotta che visualizzi il classico messaggio di benvenuto “Hello World…!”. Per il momento quello che conta e che per richiamare un controller qualsiasi hai bisogno di definire una rotta. Sappi anche però che richiamare un controller senza richiamare una vista non serve a nulla. Ora capirai perché.
7. Creazione di viste
Le viste sono i file che definiscono l’interfaccia utente dell’applicazione. Laravel utilizza il motore di template “Blade” per la creazione di viste le cosiddette “view”.
Le viste sono memorizzate nella cartella “resources/views”. Per creare una nuova vista, puoi creare un nuovo file con estensione “.blade.php”. Un esempio tipico di una vista Laravel con Blade è questo:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Titolo della mia pagina</title>
</head>
<body>
<h1>{{ $saluto }}!</h1>
</body>
</html>
Il funzionamento della vista è molto semplice, come puoi notare all’interno della vista c’è la variabile “$saluto”, questa variabile è passata dal controller alla vista richiamandola con questa istruzione:
public function index()
{
$saluto = "Hello World…!";
return view('welcome', ['saluto' => $saluto]);
}
Considerando “index”, come ipotetico metodo di un ipotetico controller, “Welcome” è il nome della vista, “saluto” è il nome della variabile è “$saluto” rappresenta il suo contenuto, cioè “Hello World…!”. In questo modo potrai passare qualsiasi oggetto alla vista.
8. Esempio di applicazione
Adesso vediamo come creare un’applicazione web che stamperà il classico saluto “Hello World…!”. Per fare questo ci serve necessariamente creare un controller. Ora digita questo comando per creare il tuo primo controller:
php artisan make:controller MioController
Come ti ho precedentemente spiegato, con questo comando, avrai creato il file “MioController.php” nella cartella “app/Http/Controllers”.
8.1. Controller
Ora per vedere la tua prima applicazione web in azione non ti rimane che popolare il controller “MioController” con le istruzioni che richiameranno la vista welcome, contenuta nel file “welcome.blade.php”, e a cui verrà passata anche la variabile $saluto.
class MioController extends Controller
{
public function index()
{
$saluto = “Hello World…!”;
return view('welcome', [saluto => $saluto]);
}
}
8.2. Come richiamare l’esecuzione della vista
È arrivato il momento di mettere in moto Laravel richiamando il controller “MioController“che invierà il contenuto della vista “welcome.blade.php” al browser. Per compiere questa operazione hai bisogno di dichiarare una rotta specifica ricordi? Quindi l’URL che richiamerà il controller dipenderà da come hai definito la rotta. In questo caso supponendo che l’URL che invocherà il controller sia questo: “http://localhost:8000/welcome” hai bisogno di modificare il file “routes/web.php” aggiungendo questo codice:
Route::get('/welcome', function () {
return view('welcome');
});
Ora non ti rest ache aprire il tuo browser preferito e digitare l’URL “http://localhost:8000/welcome”. Il browser visualizzerà fedelmente il saluto “Hello World…!”.
In ogni caso Laravel ti permette di visualizzare tutti gli URL associate alle relative rotte. Ad esempio per scoprire l’URL esatto che richiama la vista “welcome.blade.php”, puoi utilizzare il comando: “php artisan route:list”.
Domande frequenti
Per installare Laravel su Windows, puoi seguire questi passaggi:
a) Installa PHP 7.4 o superiore.
b) Installa Composer.
c) Apri un terminale e digita il seguente comando:
composer global require laravel/installer
d) Crea un nuovo progetto Laravel usando il comando: laravel new nome_progetto
Per utilizzare un database MySQL con Laravel, dovrai modificare il file “.env”. Apri il file e modifica le seguenti variabili:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=nome_database
DB_USERNAME=nome_utente
DB_PASSWORD=password
Le rotte sono definite nel file “routes/web.php”. Per creare una nuova rotta, puoi utilizzare la funzione Route::get(), Route::post(), Route::put(), Route::delete(), ecc.
Ad esempio, la seguente rotta specifica che la richiesta GET per / dovrebbe essere gestita dal metodo index del controller HomeController:
Route::get(‘/’, ‘HomeController@index’);