Laravel

Initialisation

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

  1. 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.
  2. Modèle : # php artisan make:model XxxxXxxx
  3. 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())
  4. 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

 

  1. Aimeos
    Une solution e-commerce robuste et évolutive, intégrée à Laravel, idéale pour les boutiques de toutes tailles.
  2. Bagisto
    Une plateforme e-commerce open-source basée sur Laravel, offrant une gestion complète des produits, commandes, et clients.
  3. LunarPHP
    Une solution e-commerce moderne et modulaire pour Laravel, dotée d’une architecture flexible et d’une API GraphQL.
  4. Vanilo
    Un package modulaire qui permet de construire des solutions e-commerce sur mesure en intégrant uniquement les modules nécessaires.
  5. Laravel Shopping Cart
    Un package simple et léger pour ajouter une fonctionnalité de panier d’achat à votre projet Laravel.
  6. Simple Commerce by Statamic
    Une solution minimaliste et extensible pour créer des fonctionnalités e-commerce dans un environnement Laravel.
  7. LaravelEcomm
    Un projet open-source basé sur Laravel 11, suivant une architecture modulaire, idéal pour démarrer rapidement une boutique en ligne.
  8. 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.
  9. 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.
  10. Paystack for Laravel
    Une intégration facile de la passerelle de paiement Paystack, adaptée aux projets e-commerce Laravel.
  11. Spatie Laravel Sitemap
    Génère automatiquement des sitemaps XML pour améliorer le référencement de votre blog.
  12. Laravel Jetstream
    Fournit des fonctionnalités avancées pour l’authentification, la gestion des utilisateurs, et les équipes.
  13. 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

  1. Créer un fichier
    .env.local

    (copier le fichier

    .env

    )

  2. 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

  1. Créer un dossier pour les vues dans
    resources/views

    :

    layouts

    ,

    pages

    , etc.

  2. Ajouter un fichier de base :
    base.blade.php

    dans

    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

  1. Créer un factory pour générer des données fictives :
php artisan make:factory PageFactory
  1. Créer un seeder pour insérer des données :
php artisan make:seeder PageSeeder
  1. 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 :

  1. Ajouter une route dans
    routes/api.php

    :

Route::get('/pages', [PageController::class, 'index']);
  1. 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

  1. Site officiel de Laravel : https://laravel.com
  2. Documentation officielle : https://laravel.com/docs
  3. Packagist : https://packagist.org
  4. Laracasts : https://laracasts.com
  5. GitHub Laravel : https://github.com/laravel/laravel
  6. Stack Overflow : https://stackoverflow.com/questions/tagged/laravel
VPS – Problème, Diagnostic, Nettoyage et Vérification  -Scripts-

VPS – Problème, Diagnostic, Nettoyage et Vérification -Scripts-

Nettoyage et Vérification d’un VPS : L’Exemple Docker Optimisez la performance et la stabilité de votre Serveur Privé Virtuel (VPS) ! Ce guide pratique vous montrera comment effectuer un nettoyage en profondeur et une vérification complète de votre système, en mettant l’accent sur les bonnes pratiques avec Docke

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 :

  1. 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.

  2. É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.

  3. Sécurité : Offre des protections contre les failles comme SQL Injection, XSS et CSRF.

  4. Flexibilité : Convient aussi bien aux petites applications qu’aux grandes plateformes.

  5. Écosystème modulaire : S’intègre facilement avec d’autres outils PHP comme Composer, et propose des extensions via des packages tiers.

  6. 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)

6. GitHub Laravel

7. Medium – Laravel Tutorials

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

11. FreeCodeCamp Laravel Playlist

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

  1. Laravel Forge : Outil de déploiement et de gestion de serveurs (forge.laravel.com).

  2. Laravel Nova : Interface d’administration personnalisable (nova.laravel.com).

  3. Envoyer : Gestionnaire de déploiement continu (envoyer.io).