====== Una veloce introduzione framework Laravel ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 16/09/2026 11:23 //** // //
Prima di tuffarci nell'azione teniamo a mente che Laravel è un framework PHP open source per sviluppare applicazioni web in modo rapido e ordinato, seguendo il pattern MVC. Offre strumenti per routing, database, autenticazione, validazione e template, semplificando la creazione di siti e API. E' molto ricco di funzionalità e questo forse innalza un pochino la curva di apprendimento.
===== Principali elementi di Laravel =====
^ Ruolo ^ Descrizione ^ Esempio in Laravel ^ Percorso file esempio ^
| Model | Gestisce i dati e la logica di business | **User**, **Post**, **Product** | **app/Models/User.php**, **app/Models/Post.php** |
| View | Mostra l’interfaccia all’utente | file Blade | **resources/views/** |
| Controller | Riceve le richieste e coordina Model e View | **UserController**, **PostController** | **app/Http/Controllers/** |
| Route | Associa URL a controller o closure | file routes | **routes/web.php**, **routes/api.php** |
| Middleware | Filtra richieste prima che arrivino al controller | **auth**, **throttle** | **app/Http/Middleware/** |
| Service | Incapsula logica complessa riutilizzabile | classi di servizio | **app/Services/** |
| Request | Valida e prepara i dati in ingresso | **FormRequest** | **app/Http/Requests/** |
| Repository | Astrazione per accesso ai dati | pattern architetturale | spesso in **app/Repositories/** |
| Helper / Facade | Accesso rapido a servizi del framework | **DB**, **Cache**, **Auth** | usati direttamente nel codice |
Di seguito metteremo su un piccolo progetto di esempio. Creo un'agenda che gestisce una tabella sqlite con soli 2 campi "nominativo" e "email".
====== 1) Crea il progetto ======
composer create-project laravel/laravel agenda
cd agenda
====== 2) Configura SQLite ======
Crea il file del database:
touch database/database.sqlite
Poi apri .env e imposta:
DB_CONNECTION=sqlite
DB_DATABASE=/percorso/assoluto/del/progetto/database/database.sqlite
Su Windows puoi usare un percorso tipo:
DB_DATABASE=C:\path\to\agenda\database\database.sqlite
====== 3) Crea migration e model ======
php artisan make:model Contatto -m
Apri la migration in database/migrations/...create_contattos_table.php e metti:
public function up(): void
{
Schema::create('contattos', function (Blueprint $table) {
$table->id();
$table->string('nominativo');
$table->string('email')->unique();
$table->timestamps();
});
}
====== 4) Esegui le migrazioni ======
php artisan migrate
====== 5) Crea controller ======
php artisan make:controller ContattoController --resource
====== 6) Aggiungi il model ======
In app/Models/Contatto.php:
class Contatto extends Model
{
protected $fillable = ['nominativo', 'email'];
}
====== 7) Definisci le rotte ======
In routes/web.php:
use App\Http\Controllers\ContattoController;
Route::get('/', [ContattoController::class, 'index']);
Route::resource('contatti', ContattoController::class);
====== 8) Completa il controller ======
In app/Http/Controllers/ContattoController.php:
use App\Models\Contatto;
use Illuminate\Http\Request;
public function index()
{
$contatti = Contatto::all();
return view('contatti.index', compact('contatti'));
}
public function create()
{
return view('contatti.create');
}
public function store(Request $request)
{
$request->validate([
'nominativo' => 'required|string|max:255',
'email' => 'required|email|unique:contattos,email',
]);
Contatto::create($request->only('nominativo', 'email'));
return redirect()->route('contatti.index');
}
====== 9) Crea le viste ======
Crea la cartella:
mkdir -p resources/views/contatti
=== resources/views/contatti/index.blade.php ===
Agenda
Agenda contatti
Nuovo contatto
@foreach($contatti as $contatto)
- {{ $contatto->nominativo }} - {{ $contatto->email }}
@endforeach
=== resources/views/contatti/create.blade.php ===
Nuovo contatto
Nuovo contatto
====== 10) Avvia il server ======
php artisan serve
Vai su:
http://127.0.0.1:8000