Step By Step
– Pour tester l’application :
- # Administrateur : admin – admin@admin.net – MDP : – admin123
- # Utilisateur 1 : user1 – userlaravel1@userlaravel.net – MDP : – userlaravel1
- # Utilisateur 2 : user2 – userlaravel2@userlaravel.net – MDP : – userlaravel2
– Visualisation structure du projet :
- # brew install tree // Installation sous mac
- # tree -a > project_structure.txt // generation globale
- # find . -maxdepth 2 > project_structure.txt // Pour limiter la profondeur
Commandes utilisées fréquement :
-Nettoyage du cache
- # php artisan route:clear
- # php artisan cache:clear
- # php artisan config:clear
-Génération du nouveau projet
- # composer -v // voir la version
- # php -v // voir la version
- # composer create-project laravel/laravel xxxxxx // Lancer un nouveau projet
- # cd xxxxx // Ouvrir le projet
- # npm install // Faire les course : – Installer toutes les bibliothèques et outils nécessaires au bon fonctionnement du projet. Ces dépendances sont listées dans package.json .
- # npm run dev // Allumer le four et commencer à cuisiner : – Lancement du serveur de développement + Compilation des fichiers + Actualisation aprés modification d’un fichier
- # php artisan serve Accédez l’application via http://127.0.0.1:8000 // Lancer le serveur
- @@ Configurer le fichier .env // Modification pour accées BdD
- # php artisan key:generate
- # php artisan migrate // Migration de la base de données :
- # composer require nesbot/carbon // ” Facutatif” Bibliothèque PHP conçue pour faciliter la manipulation des dates et des heures * Créer des instances de date et d’heure * Effectuer des calculs (ajouter des jours, des mois, etc.) * Comparer des dates
-Génération des fichiers projet
- Migration : # php artisan make:migration create_xxxx_xxx_table // Pour gérer l’évolution de la bdd (ajout, modification ou suppression de tables, colonnes, etc.) ->> contient deux méthodes : up() : appliquer les modifications . down() : annuler les modifications.
- Modèle : # php artisan make:model XxxxXxxx
- Contrôleur : # php artisan make:controller XxxxxXxxxxController –resource // Récupère tous les élements et renvoie la vue (index() creat() store() show() edit () update() destroy())
- Répertoire des vues : # mkdir -p resources/views/xxxxxxx
Annexes :
-Dépendances (gérées via Composer)
- Voir fichier :@@ composer.json et le répertoire @@ vendor
- Voir les dependances : # composer show
- Ajouter # composer require nom_du_package Supprimer # composer remove nom_du_package Mettre à jour # composer update
- Installer les dépendancesfrontend : # npm install # Ajouter # npm install nom_du_package Supprimer # npm uninstall nom_du_package Mettre à jour l # npm update
-Laravel Jetstream (Authentification avancée)
- Jetstream est un scaffolding d’authentification pour Laravel qui vous permet de démarrer rapidement vos projets en vous fournissant une base solide et personnalisable. Il simplifie la mise en place des fonctionnalités courantes d’authentification, telles que l’enregistrement, la connexion, la réinitialisation de mot de passe, et bien plus encore.
- Jetstream propose deux stacks principales pour répondre à différents besoins : – Livewire: Cette stack utilise Livewire pour créer des interfaces utilisateur réactives et dynamiques. C’est un excellent choix si vous souhaitez une expérience utilisateur moderne et interactive. – Inertia: Cette stack utilise Inertia.js pour rendre le rendu côté serveur plus simple. C’est un bon choix si vous souhaitez une application à page unique (SPA) sans avoir à écrire beaucoup de JavaScript.
- # composer require laravel/jetstream
- # php artisan jetstream:install livewire
- # npm install
- # npm run dev
- # php artisan migrate
-
Jetstream gère l’inscription, la connexion et la réinitialisation du mot de passe. Pour personnaliser les vues dans resources/views/auth.
-Livewire
- Livewire est déjà installé via Jetstream. Assurez-vous qu’il est prêt à l’emploi :
- # composer require livewire/livewire
- # npm install –save @livewire/livewire
- # npm run dev
-Spatie Laravel Permission (Gestion des rôles)
- # composer require spatie/laravel-permission
- # php artisan vendor:publish –provider=”Spatie\Permission\PermissionServiceProvider”
- # php artisan migrate
- Configuration du modèle User pour utiliser le trait HasRoles « models/user.php »
- Ajouter @@ use SpatiePermissionTraitsHasRoles;
- Créer un fichier Seeder
- # php artisan make:seeder RoleSeeder
- # php artisan db:seed Ou php artisan db:seed –class=RoleSeeder
- # php artisan make:seeder UserSeeder
- # php artisan make:controller UserController
- # php artisan make:command AssignRole
Je trouve pas une commande ?
- # php artisan list
- # php artisan help <commande> //informations d’une commande spécifique
–Migrations
- Créer une migration :
- # php artisan make:migration create_table_name_table
- Exécuter les migrations :
- # php artisan migrate
- Vérifier le statut des migrations :
- # php artisan migrate:status
- Annuler la dernière migration :
- # php artisan migrate:rollback
- Réinitialiser toutes les migrations :
- # php artisan migrate:reset
- Supprimer et recréer la base de données :
- # php artisan migrate:refresh
–Modèles
- Créer un modèle :
- # php artisan make:model NomDuModele
- Créer un modèle avec une migration :
- #php artisan make:model NomDuModele -m
- Créer un modèle avec une migration, un factory et un seeder :
- #php artisan make:model NomDuModele -mfsc
–Contrôleurs
- Créer un contrôleur :
- #php artisan make:controller NomDuControleur
- Créer un contrôleur avec des actions de ressource :
- #php artisan make:controller NomDuControleur –resource
- Créer un contrôleur lié à un modèle :
- #php artisan make:controller NomDuControleur –model=NomDuModele
–Routes
- Afficher toutes les routes :
- php artisan route:list
–Vues
- à la main xxxx.blade.php dans le répertoire resources/views.
–Seeder
- #php artisan make:seeder NomDuSeeder
- Exécuter un seeder :
- #php artisan db:seed –class=NomDuSeeder
–Factory
- #php artisan make:factory NomDeLaFactory
–Cache
- Vider le cache :
- #php artisan cache:clear
- Vider le cache de configuration :
- #php artisan config:clear
- Vider le cache des routes :
- #php artisan route:clear
- Vider le cache des vues compilées :
- #php artisan view:clear
–Console
- Créer une commande Artisan personnalisée :
- #php artisan make:command NomDeLaCommande
–Développement
- Lancer le serveur de développement :
- #php artisan serve
- Créer des fichiers de test :
- #php artisan make:test NomDuTest
- Exécuter les tests :
- #php artisan test
- Ouvrir Tinker pour tester des commandes PHP :
- #php artisan tinker
–Notification :
- #php artisan make:notification NomDeLaNotification
–Job :
- #php artisan make:job NomDuJob
–Utilisateurs
- Créer un middleware :
- #php artisan make:middleware NomDuMiddleware
–Politique (Policy) :
- #php artisan make:policy NomDeLaPolicy
–
Exemple de Packages avec Laravel
- Aimeos
Une solution e-commerce robuste et évolutive, intégrée à Laravel, idéale pour les boutiques de toutes tailles. - Bagisto
Une plateforme e-commerce open-source basée sur Laravel, offrant une gestion complète des produits, commandes, et clients. - LunarPHP
Une solution e-commerce moderne et modulaire pour Laravel, dotée d’une architecture flexible et d’une API GraphQL. - Vanilo
Un package modulaire qui permet de construire des solutions e-commerce sur mesure en intégrant uniquement les modules nécessaires. - Laravel Shopping Cart
Un package simple et léger pour ajouter une fonctionnalité de panier d’achat à votre projet Laravel. - Simple Commerce by Statamic
Une solution minimaliste et extensible pour créer des fonctionnalités e-commerce dans un environnement Laravel. - LaravelEcomm
Un projet open-source basé sur Laravel 11, suivant une architecture modulaire, idéal pour démarrer rapidement une boutique en ligne. - GetCandy (maintenant intégré à LunarPHP)
Anciennement GetCandy, cette solution est désormais intégrée à LunarPHP, offrant des fonctionnalités modernes pour les applications e-commerce. - Sylius (intégré avec Laravel via API)
Bien que Sylius soit principalement une plateforme Symfony, il peut être utilisé avec Laravel via une intégration API pour une solution e-commerce avancée. - Paystack for Laravel
Une intégration facile de la passerelle de paiement Paystack, adaptée aux projets e-commerce Laravel. - Spatie Laravel Sitemap
Génère automatiquement des sitemaps XML pour améliorer le référencement de votre blog. - Laravel Jetstream
Fournit des fonctionnalités avancées pour l’authentification, la gestion des utilisateurs, et les équipes. - Spatie Laravel Permissions
Permet de gérer les rôles et permissions dans votre application Laravel.
Contrôleurs CRUD Routes Modéles
Les contrôleurs sont utilisés pour gérer la logique métier et interagir avec les modèles et les vues.
Un CRUD (Create, Read, Update, Delete) représente les opérations de base d’un contrôleur.
Poure générer un Controller avec CRUD
- php artisan make:controller NomController –resource
Cela génère un contrôleur dans `app/Http/Controllers/NomController.php
Liste des méthodes CRUD dans un contrôleur Laravel :
Voici les méthodes générées dans un Controller :
php
namespace App\Http\Controllers;
use App\Models\NomModel;
use Illuminate\Http\Request;
class NomController extends Controller
{
// Afficher la liste des ressources (READ)
public function index()
{
$items = NomModel::all();
return response()->json($items);
}
// Afficher le formulaire de création (non nécessaire pour API)
public function create()
{
//
}
// Enregistrer une nouvelle ressource (CREATE)
public function store(Request $request)
{
$request->validate([
‘nom’ => ‘required|string|max:255’,
]);
$item = NomModel::create($request->all());
return response()->json($item, 201);
}
// Afficher une ressource spécifique (READ)
public function show($id)
{
$item = NomModel::findOrFail($id);
return response()->json($item);
}
// Afficher le formulaire d’édition (non nécessaire pour API)
public function edit($id)
{
//
}
// Mettre à jour une ressource (UPDATE)
public function update(Request $request, $id)
{
$request->validate([
‘nom’ => ‘required|string|max:255’,
]);
$item = NomModel::findOrFail($id);
$item->update($request->all());
return response()->json($item);
}
// Supprimer une ressource (DELETE)
public function destroy($id)
{
$item = NomModel::findOrFail($id);
$item->delete();
return response()->json([‘message’ => ‘Supprimé avec succès’]);
}
}
Déclaration des Routes pour le CRUD
On définit les routes associées dans le fichier routes/api.php (pour une API) ou routes/web.php (pour une application web).
Méthode 1 : Déclaration Automatique
Laravel permet de déclarer directement un Resource Controller en une ligne :
php
use App\Http\Controllers\NomController;
Route::resource(‘noms’, NomController::class);
Cela génère automatiquement les routes suivantes :
| Méthode HTTP | URI | Action | Fonction du CRUD |
|————-|—–|——–|—————–|
| **GET** | `/noms` | `index` | Lire tous les enregistrements |
| **POST** | `/noms` | `store` | Créer un enregistrement |
| **GET** | `/noms/{id}` | `show` | Lire un enregistrement spécifique |
| **PUT/PATCH** | `/noms/{id}` | `update` | Mettre à jour un enregistrement |
| **DELETE** | `/noms/{id}` | `destroy` | Supprimer un enregistrement |
Méthode 2 : Déclaration Manuelle
Pour déclarer manuellement les routes :
php
Route::get(‘/noms’, [NomController::class, ‘index’]);
Route::post(‘/noms’, [NomController::class, ‘store’]);
Route::get(‘/noms/{id}’, [NomController::class, ‘show’]);
Route::put(‘/noms/{id}’, [NomController::class, ‘update’]);
Route::delete(‘/noms/{id}’, [NomController::class, ‘destroy’]);
Génération du Modèle et Migration— php artisan make:model NomModel -m
Cela crée :
– Un modèle `app/Models/NomModel.php`
– Une migration dans `database/migrations/xxxx_xx_xx_xxxxxx_create_nom_models_table.php`
Mettre à jour la migration :
php
public function up()
{
Schema::create(‘nom_models’, function (Blueprint $table) {
$table->id();
$table->string(‘nom’);
$table->timestamps();
});
}
Appliquez la migration : — php artisan migrate
Développement
Liste ordonnée des types de fichiers à générer
- Routes
- Contrôleurs
- Modèles
- Vues (Blade Templates)
- Migrations
- Seeders et Factories (pour les données de test)
- Middleware
Progressivement
Environnement de développement
# Installer Composer si ce n’est pas déjà fait
composer -v
php -v
# Créer un projet Laravel
composer create-project laravel/laravel laravelmomoperf
cd laravelmomoperf
# Démarrer le serveur local
php artisan serve
Mise en route serveur local
- Par défaut, Laravel utilise le port
127.0.0.1:8000.
Configuration de l’environnement
- Créer un fichier
.env.local(copier le fichier
.env)
- Modifier la connexion à la base de données :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravelmomoperf
DB_USERNAME=root
DB_PASSWORD=root
Création de la base de données
php artisan migrate
Création des éléments principaux
Création d’un contrôleur
php artisan make:controller IndexController
Modifiez la route pour la page d’accueil dans
routes/web.php
:
use App\Http\Controllers\IndexController;
Route::get('/', [IndexController::class, 'index'])->name('index');
Ajout de vues et styles
- Créer un dossier pour les vues dans
resources/views:
layouts,
pages, etc.
- Ajouter un fichier de base :
base.blade.phpdans
layouts:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title')</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/css/style.css">
</head>
<body>
@include('partials.header')
<div class="container">
@yield('content')
</div>
@include('partials.footer')
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Entités et base de données
Création des modèles et migrations
php artisan make:model Page -m
Cela génère un modèle (
app/Models/Page.php
) et une migration correspondante dans
database/migrations
.
Exécution des migrations
php artisan migrate
Création de CRUD
Générez les fichiers nécessaires avec :
php artisan make:controller PageController --resource
Ajoutez les routes pour le CRUD dans
routes/web.php
:
use App\Http\Controllers\PageController;
Route::resource('pages', PageController::class);
Seeders et Factories
- Créer un factory pour générer des données fictives :
php artisan make:factory PageFactory
- Créer un seeder pour insérer des données :
php artisan make:seeder PageSeeder
- Exécuter les seeders :
php artisan db:seed --class=PageSeeder
Sécurité et authentification
Laravel propose une solution simple avec Laravel Breeze ou Laravel Jetstream pour l’authentification :
composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev
php artisan migrate
API
Pour créer une API :
- Ajouter une route dans
routes/api.php:
Route::get('/pages', [PageController::class, 'index']);
- Utiliser Laravel Sanctum pour l’authentification API :
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Laravel en bref
Laravel est un framework PHP open-source puissant et élégant conçu pour simplifier le développement web. Il est reconnu pour :
- Simplicité : Une syntaxe claire et intuitive.
- MVC : Adopte le modèle MVC pour séparer la logique.
- Outils inclus : Artisan CLI, Eloquent ORM, Blade Templates.
- Communauté : Une large communauté et des extensions disponibles sur Packagist.
Ressources utiles
- Site officiel de Laravel : https://laravel.com
- Documentation officielle : https://laravel.com/docs
- Packagist : https://packagist.org
- Laracasts : https://laracasts.com
- GitHub Laravel : https://github.com/laravel/laravel
- Stack Overflow : https://stackoverflow.com/questions/tagged/laravel
Téléchargement d’images avec Laravel
Nous créerons deux routes : l'une pour la méthode GET afin d'afficher les formulaires et l'autre...
Exemple CRUD avec Laravel 11
Signification de CRUD : CRUD est un acronyme issu du monde de la programmation informatique qui...
Comment publier le fichier de route API dans Laravel ?
Par défaut, dans Laravel, le fichier de route API (api.php) n'est pas visible et il n'est pas...
Comment créer et utiliser une ENUM dans Laravel ?
Une enum, abréviation de "enumeration", est un type de données en programmation qui se compose...
Comment créer une interface dans Laravel ?
Une interface définit un ensemble de méthodes qu'une classe doit implémenter. En termes simples,...
Comment créer une classe personnalisée dans Laravel ?
Laravel 11 propose une structure d'application plus légère. Il introduit également des...
comment publier le répertoire lang dans le framework Laravel 11
Normalement, les projets Laravel n'incluent pas de fichiers de langue, car ils ne sont pas souvent...
Quoi de neuf dans Laravel 11
L 'équipe principale de Laravel adhère à la méthodologie de versionnage sémantique, ce qui...
Exemple de Fusion de Plusieurs Fichiers PDF
Dans ce tutoriel, nous allons installer les packages Composer setasign/fpdi et setasign/fpdf, puis...
Téléchargement de Fichier avec Barre de Progression
Dans cet article, nous allons apprendre à faire un téléchargement d'image via AJAX avec une barre...
Filament pour Laravel : Un accélérateur de développement d’administrations
Filament est un package Laravel qui permet de créer des interfaces d'administration élégantes et...
Sites Ressources e-Plus Pour Laravel 11
1. Packagist Description : Le principal dépôt de packages PHP, avec une catégorie spécifique pour...
Laravel
Laravel est un framework PHP open-source conçu pour simplifier le développement d’applications web robustes, élégantes et performantes. Créé par Taylor Otwell en 2011, Laravel s’appuie sur l’architecture MVC (Model-View-Controller), ce qui permet de séparer la logique métier, la gestion des données et l’interface utilisateur.
Les avantages de Laravel :
-
Syntaxe élégante et lisible : Conçu pour simplifier les tâches courantes comme l’authentification, la gestion des sessions ou la validation des données.
-
Écosystème riche : Fournit des outils intégrés comme Eloquent ORM, Blade (moteur de templates), et des jobs pour gérer les files d’attente.
-
Sécurité : Offre des protections contre les failles comme SQL Injection, XSS et CSRF.
-
Flexibilité : Convient aussi bien aux petites applications qu’aux grandes plateformes.
-
Écosystème modulaire : S’intègre facilement avec d’autres outils PHP comme Composer, et propose des extensions via des packages tiers.
-
Support API : Laravel fournit des outils pour construire des API RESTful robustes et rapides.
1. Site officiel de Laravel
-
URL : https://laravel.com
-
Description : Le site officiel contient des ressources essentielles, y compris la documentation, des tutoriels de démarrage et des informations sur les outils comme Laravel Forge et Envoyer.
2. Documentation Laravel
-
URL : https://laravel.com/docs
-
Description : La documentation officielle de Laravel est la meilleure source pour comprendre les fonctionnalités de base et avancées du framework.
3. Laravel News
-
URL : https://laravel-news.com
-
Description : Un site dédié aux nouveautés, tutoriels, astuces, et packages populaires autour de Laravel.
4. Laracasts
-
URL : https://laracasts.com
-
Description : Plateforme de formation contenant des tutoriels vidéo de qualité, souvent appelée « Netflix pour les développeurs Laravel ».
5. Packagist (Laravel Packages)
-
Description : Repertorie les packages Laravel que vous pouvez installer pour enrichir vos projets.
6. GitHub Laravel
-
Description : Dépôt officiel du framework Laravel, où vous pouvez consulter le code source et contribuer.
7. Medium – Laravel Tutorials
-
Description : Articles et tutoriels sur Laravel écrits par des développeurs expérimentés.
8. Codecourse
-
URL : https://codecourse.com
-
Description : Propose des tutoriels vidéo de développement PHP et Laravel, souvent orientés vers des cas pratiques.
9. Tinkerwell
-
URL : https://tinkerwell.app
-
Description : Un outil compagnon pour exécuter du code Laravel directement sans ouvrir le navigateur.
10. DevDojo
-
Description : Série de tutoriels interactifs pour apprendre Laravel pas à pas.
11. FreeCodeCamp Laravel Playlist
-
Description : Articles et vidéos pédagogiques pour apprendre Laravel gratuitement.
12. PHP Laravel France (Communauté francophone)
-
URL : https://laravel.fr/
-
Description : Une communauté francophone dédiée aux développeurs Laravel.
Quelques outils complémentaires dans l’écosystème Laravel
-
Laravel Forge : Outil de déploiement et de gestion de serveurs (forge.laravel.com).
-
Laravel Nova : Interface d’administration personnalisable (nova.laravel.com).
-
Envoyer : Gestionnaire de déploiement continu (envoyer.io).
