Le résumé de Framework Laravel V9
Programmation - Jui 17, 2023
Qu'est-ce que Laravel 9
Comment créer un projet Laravel
La method 1
composer global require laravel/installer
laravel new nom-du-projet
composer create-project --prefer-dist laravel/laravel nom-du-projet
Qu'est-ce le modèle Eloquant
Qu'est-ce les middlewares
php artisan make:middleware CheckAgeMiddleware
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAgeMiddleware
{
public function handle($request, Closure $next)
{
$age = $request->input('age');
if ($age < 18) {
return redirect('/')->with('error', 'Vous devez être majeur (18 ans ou plus).');
}
return $next($request);
}
}
protected $routeMiddleware = [
// ...
'checkAge' => \App\Http\Middleware\CheckAgeMiddleware::class,
];
Route::get('/restricted', function () {
// Logique de la route restreinte
})->middleware('checkAge');
Qu'est-ce migrate:rollback
php artisan migrate:rollback
Qu'est-ce migrate:rollback --step
php artisan migrate:rollback --step=3
Qu'est-ce migrate:rollback --batch
php artisan migrate:rollback --batch=2
Qu'est-ce migrate:rollback --pretend
L'option --pretend utilisée avec la commande migrate:rollback dans Laravel permet d'afficher les migrations qui seraient annulées sans effectuer réellement les modifications dans la base de données.
php artisan migrate:rollback --pretend
Qu'est-ce migrate:reset
La commande migrate:reset est utilisée pour annuler toutes les migrations et réinitialiser la structure de la base de données.
Qu'est-ce migrate:fresh
migrate:fresh: supprimer toutes les tables de la base de données et exécute toutes les migrations à partir de zéro.
Qu'est-ce Route::resource()
La méthode Route::resource() est utilisée pour générer automatiquement les routes pour les opérations CRUD (Create, Read, Update, Delete) d'une ressource. Elle permet de définir rapidement toutes les routes nécessaires pour interagir avec un contrôleur de ressources.
Les relations de modèle sont utilisées pour définir les relations entre les différents modèles
Relation "One-to-One" (Un-à-Un) :
hasOne
: Définit une relation où un modèle possède un autre modèle.belongsTo
: Définit une relation où un modèle appartient à un autre modèle.
Relation "One-to-Many" (Un-à-Plusieurs) :
hasMany
: Définit une relation où un modèle possède plusieurs instances d'un autre modèle.belongsTo
: Définit une relation où un modèle appartient à un autre modèle.
Relation "Many-to-Many" (Plusieurs-à-Plusieurs) :
belongsToMany
: Définit une relation où plusieurs modèles sont liés à plusieurs instances d'un autre modèle.
Relation "Has-One-Through" (Un-a-Un-À-Travers) :
hasOneThrough
: Définit une relation où un modèle possède un autre modèle à travers une table intermédiaire.
Relation "Has-Many-Through" (Un-a-Plusieurs-À-Travers) :
hasManyThrough
: Définit une relation où un modèle possède plusieurs instances d'un autre modèle à travers une table intermédiaire.
Les types de colonnes couramment utilisés dans les migrations :
bigIncrements('column_name')
: Crée une colonne d'incrémentation de type big integer (pour les clés primaires).bigInteger('column_name')
: Crée une colonne de type big integer.binary('column_name')
: Crée une colonne de type binaire.boolean('column_name')
: Crée une colonne de type booléen.char('column_name', length)
: Crée une colonne de type caractère avec une longueur spécifiée.date('column_name')
: Crée une colonne de type date.dateTime('column_name')
: Crée une colonne de type date et heure.decimal('column_name', total_digits, decimal_digits)
: Crée une colonne de type décimal avec un nombre total de chiffres et un nombre de chiffres décimaux spécifiés.double('column_name', total_digits, decimal_digits)
: Crée une colonne de type double avec un nombre total de chiffres et un nombre de chiffres décimaux spécifiés.enum('column_name', ['value1', 'value2', ...])
: Crée une colonne de type enum avec les valeurs spécifiées.float('column_name', total_digits, decimal_digits)
: Crée une colonne de type float avec un nombre total de chiffres et un nombre de chiffres décimaux spécifiés.integer('column_name')
: Crée une colonne de type integer.json('column_name')
: Crée une colonne de type JSON.string('column_name', length)
: Crée une colonne de type chaîne de caractères avec une longueur spécifiée.text('column_name')
: Crée une colonne de type texte.time('column_name')
: Crée une colonne de type heure.timestamp('column_name')
: Crée une colonne de type timestamp.
Example:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateExampleTable extends Migration
{
public function up()
{
Schema::create('examples', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->integer('age')->nullable();
$table->boolean('is_active')->default(true);
$table->text('description')->nullable();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('examples');
}
}
Qu'est-ce migrate up() et down()
up(): La méthode up() est utilisée pour définir les actions à effectuer lors de l'exécution de la migration. Cela inclut généralement la création de tables, l'ajout de colonnes, l'ajout d'index, la création de relations, etc.
down(): La méthode down() est utilisée pour définir les actions à effectuer lors de l'annulation de la migration.
Qu'est-ce la méthode dropIfExists() dans down()
La méthode dropIfExists() est une méthode fournie par Laravel qui est utilisée dans la méthode down() des migrations pour supprimer une table de la base de données si elle existe.
La liste des 10 validations importantes fournies par Laravel pour valider les données
required
: La validationrequired
est utilisée pour s'assurer qu'un champ est présent et non vide.numeric
: La validationnumeric
est utilisée pour vérifier si une valeur est un nombre.email
: La validationemail
est utilisée pour valider si une valeur est une adresse e-mail valide.unique
: La validationunique
est utilisée pour vérifier si une valeur est unique dans une table donnée.min
: La validationmin
est utilisée pour vérifier si une valeur numérique atteint ou dépasse une valeur minimale spécifiée.max
: La validationmax
est utilisée pour vérifier si une valeur numérique est inférieure ou égale à une valeur maximale spécifiée.string
: La validationstring
est utilisée pour s'assurer que la valeur est une chaîne de caractères.in
: La validationin
est utilisée pour vérifier si une valeur est présente dans un ensemble de valeurs spécifiées.date
: La validationdate
est utilisée pour vérifier si une valeur est une date valide.confirmed
: La validationconfirmed
est utilisée pour valider si deux champs de confirmation correspondent, comme la confirmation d'un mot de passe.
Example:
$request->validate([
'name' => 'required|string',
'email' => 'required|email|unique:users',
'age' => 'numeric|min:18',
'password' => 'required|confirmed',
]);
Qu'est-ce la méthode auth()
La fonction auth() permet d'interagir avec le système d'authentification de l'application. Elle facilite l'accès aux fonctionnalités d'authentification, d'autorisation et de gestion des utilisateurs.
Qu'est-ce la class Auth.
La classe Auth est une classe de façade (facade class) dans Laravel qui fournit une interface simplifiée pour interagir avec le système d'authentification de l'application.
Qu'est-ce la méthode Auth() class.
@auth et @guest sont des directives Blade intégrées dans Laravel qui permettent d'afficher du contenu conditionnel en fonction de l'état d'authentification de l'utilisateur.
La directive @auth: est utilisée pour afficher du contenu qui ne doit être visible que si l'utilisateur est authentifié.
La directive @guest: est utilisée pour afficher du contenu qui doit être visible uniquement si l'utilisateur n'est pas authentifié.
Qu'est-ce @csrf
La directive @csrf est une directive Blade qui génère un jeton CSRF pour protéger vos formulaires contre les attaques de falsification de requêtes intersites.
Qu'est-ce la function isset()
La fonction isset() est utilisée pour vérifier si une variable est définie et si sa valeur n'est pas nulle (NULL).
Qu'est-ce ORM (Object Relatioal Mapping)
ORM signifie "Object-Relational Mapping" Il s'agit d'un concept de programmation qui permet de mapper les objets d'une application à une base de données relationnelle.
Qu'est-ce CMS (Content Management System)
CMS est l'acronyme de "Content Management System" Il s'agit d'une application logicielle utilisée pour créer, gérer et publier du contenu sur le web de manière intuitive et conviviale.
Comment télécharger un fichier sur Laravel
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class FileController extends Controller { public function upload(Request $request) { if ($request->hasFile('file')) { $file = $request->file('file'); $path = $file->store('uploads'); $url = Storage::url($path); return "Fichier téléchargé avec succès!"; } return "Aucun fichier sélectionné."; } }
La liste de directives Blade importantes
@extends
: Indique que la vue actuelle hérite d'un modèle parent.@section
: Définit une section dans le modèle parent ou la vue enfant.@yield
: Affiche le contenu d'une section définie dans le modèle parent.@include
: Inclut une autre vue Blade.@if
,@elseif
,@else
: Permettent d'effectuer des opérations conditionnelles.@unless
: Effectue une opération conditionnelle inverse.@foreach
: Itère sur une collection ou un tableau.@forelse
: Itère sur une collection ou un tableau, avec une clause pour les cas où la collection est vide.@empty
: Indique une action à effectuer si une collection est vide.@while
: Effectue une boucle tant qu'une condition est vraie.@for
: Effectue une boucle pour un nombre défini d'itérations.@break
: Interrompt une boucle prématurément.@continue
: Passe à l'itération suivante d'une boucle.@php
: Permet d'inclure du code PHP brut dans une vue Blade.@endphp
: Indique la fin d'un bloc de code PHP brut.@auth
,@guest
: Vérifie si un utilisateur est authentifié ou invité.@can
,@cannot
: Vérifie les autorisations de l'utilisateur.@isset
,@empty
,@hasSection
: Vérifie si une variable, une collection, une section est définie ou vide.@push
,@prepend
,@stack
: Gèrent les piles de contenu pour le modèle parent.@error
,@enderror
: Affiche les erreurs de validation pour un champ spécifique.@csrf
: Insère un jeton CSRF pour protéger les formulaires contre les attaques CSRF.
Les composants Laravel
Les composants Laravel sont des éléments d'interface utilisateur réutilisables dans le moteur de templating Blade de Laravel.
Example
1 - Définissez le composant
<button {{ $attributes->merge(['class' => 'btn']) }}>
{{ $slot }}
</button>
<x-bouton class="btn-primary">
Cliquez ici !
</x-bouton>
Les commads important de laravel 9
php artisan serve
: Démarre le serveur de développement intégré de Laravel.php artisan make:controller NomDuController
: Crée un nouveau contrôleur.php artisan make:model NomDuModele
: Crée un nouveau modèle.php artisan make:migration nom_de_la_migration
: Crée un nouveau fichier de migration.php artisan migrate
: Exécute toutes les migrations en attente.php artisan migrate:rollback
: Annule la dernière migration exécutée.php artisan make:seeder NomDuSeeder
: Crée un nouveau fichier de classe de Seeder.php artisan db:seed
: Exécute tous les seeders enregistrés.php artisan route:list
: Affiche la liste de toutes les routes définies dans votre application.php artisan make:middleware NomDuMiddleware
: Crée un nouveau middleware.php artisan make:command NomDeLaCommande
: Crée une nouvelle commande artisan.php artisan cache:clear
: Efface tous les fichiers en cache.php artisan make:migration create_table_name --create=table_name
: Crée une nouvelle migration pour créer une nouvelle table dans la base de données.php artisan migrate:refresh
: Réinitialise et réexécute toutes les migrations.php artisan migrate:status
: Affiche l'état des migrations.php artisan storage:link
: Crée le lien symbolique pour le dossier de stockage vers le dossier public.php artisan make:factory NomDuModelFactory
: Crée un nouveau fichier de factory pour générer des données de test.php artisan tinker
: Lance l'interpréteur REPL interactif de Laravel (basé sur PsySH) pour tester des expressions et interagir avec l'application.php artisan route:cache
: Génère un fichier de cache pour accélérer le processus de résolution des routes.php artisan optimize
: Compile tous les fichiers PHP de l'application en un seul fichier pour une meilleure performance.php artisan config:cache
: Génère un fichier de cache pour accélérer le chargement de la configuration.php artisan make:provider NomDuServiceProvider
: Crée un nouveau fichier de service provider.php artisan make:middleware NomDuMiddleware --api
: Crée un middleware spécifique à une API.php artisan queue:work
: Démarre le worker de la file d'attente pour traiter les travaux en arrière-plan.php artisan make:policy NomDuPolicy --model=NomDuModel
: Crée une nouvelle politique d'autorisation pour un modèle spécifique.