Models,Controller,View,Routes
Étape 1: Routes (web.php)
Ouvrez le fichier routes/web.php, où vous définissez les routes de votre application.
// routes/web.php
Route::get('/utilisateurs', 'UtilisateurController@index');
Cette route indique que lorsque l'utilisateur accède à l'URL "/utilisateurs", la méthode index du contrôleur UtilisateurController sera appelée.
Exemples des routes
Route::get('/', function () {
return 'Hello, world!';
});
Cette route correspond à l'URI / et appelle la fermeture function () {...} lorsque l'utilisateur accède à cette URI. La fermeture peut être utilisée pour générer une réponse HTTP, par exemple en renvoyant du texte, du HTML, ou un objet JSON.
Remarque
si on la route n'exites pas dans le fichier de routage (web.php) le serveur afficher error 404
Routes avec des paramètres
Les routes peuvent également accepter des paramètres. Les paramètres sont indiqués par des accolades {} dans l'URI.
Route::get('/articles/{id}', function ($id) {
return 'L\'article avec l\'ID ' . $id;
});
Cette route correspond à l'URI /articles/{id}. Le paramètre id est récupéré à partir de l'URI et transmis à la fermeture en tant que paramètre $id.
Routes avec plusieurs Paramètres
Route::get('/articles/{parametre2}/{parametre3}', function ($parametre2,$parametre3) {
//...
});
Routes avec plusieurs méthodes HTTP
Une route peut être définie pour accepter plusieurs verbes HTTP.
Route::match(['get', 'post'], '/', function () {
return 'Cette route accepte les verbes GET et POST.';
});
Cette route correspond à l'URI / et accepte les verbes HTTP GET et POST.
Routes vers des contrôleurs
Les routes peuvent également être définies pour pointer vers des contrôleurs.
Route::get('/', 'ArticlesController@index');
Cette route correspond à l'URI / et pointe vers la méthode index() du contrôleur ArticlesController.
Routes groupées
Les routes peuvent être regroupées pour partager des paramètres ou des filtres.
//Les routes pour Gérer les clients
Route::group(['prefix' => 'clients'], function () {
Route::get('/ajouter',function(){
return "<h1>Ajouter Client</h1>";
});
Route::get('/Modifier',function(){
return "<div>Modifier Client<div>";
});
//get , post ,put,delete,....
});
Ce code définit un groupe de routes avec un préfixe clients. Les routes du groupe partagent le préfixe /clients.
Une route pour afficher une page (vue) :
Route::get('/page1', function () {
return view('page1');
});
view('page1'); la page
page1.blade.php doit etre crée dans le dossier
resources/views
<h1>Hello i am page1</h1>
Remarque
Afin d'organiser les vues dans le dossier views il préférable de les mettre dans des dossiers exemple:
GestionProduits/listeProduit on doit créer le dossier
GestionProduits dans
resources/views puis créer la vue
listeProduit.blade.php
Route::get('/produits/liste',function(){
return view('GestionProduits/listeProduit');
});
GestionProduits/listeProduit.blade.php
<h2>Product List</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Label</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<!-- Replace the content inside the tbody with your product data -->
<tr>
<td>1</td>
<td>Product A</td>
<td>$19.99</td>
</tr>
<tr>
<td>2</td>
<td>Product B</td>
<td>$29.99</td>
</tr>
<!-- Add more rows as needed -->
</tbody>
</table>
Utilisation du controlleur
Une route pour afficher une liste d'articles :
Route::get('/articles',"App\Http\Controllers\ArticlesController@index");
lorsque on reçoit la request
/articles la méthode
index sera exécutée
on doit créer la fonction
index dans le controlleur
ArticlesController
Étape 1:créer Controller (ArticlesController)
php artisan make:controller ArticlesController
le controlleur
ArticlesController est crée dans le dossier
app/Http/Controllers
//namespace :permet de spécifier le package (dossier) ou la classe est créee
namespace App\Http\Controllers;
class ArticlesController extends Controller
{
function index()
{
return "<h1>Liste Article</h1>.......";
//ou
//return view("ListeArticle");
}
}
Remarque
on peut définir les routes des fonctions d'un controlleur dans web.php aussi avec le syntaxe suivant:
//importer le controlleur
use App\Http\Controllers\ArticlesController;
//définir la route
Route::get('/articles', [ArticlesController::class,"index"]);
Étape 3: Model et migration
php artisan make:model Article -m
-m pemet de créer aussi la migration
Models/Article
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
//permet de communiquer avec la base de données
class Article extends Model
{
protected $table="articles";
protected $primaryKey="id";
protected $fillable=["nom"];
}
Migration :Article
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string("nom");
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('articles');
}
};
Lancer la migration :
php artisan migrate:refresh
Ajouter la fonction AfficherListeArticles() dans le controlleur ArticlesController
namespace App\Http\Controllers;
//importer le model
use App\Models\Article;
use Illuminate\Http\Request;
class ArticlesController extends Controller
{
function AfficherListeArticles()
{ //Article =>le model Article
//all() =>select * from Articles
$listeArticle= Article::all();
//envoyer lesArticles à la vueArticles.blade.php) contenant les données $listeArticle pour les affichés
return view("VueArticles",["lesArticles"=>$listeArticle]);
}
}
Créer la vue VueArticles.blade.php dans le dossier resources/views
<h1>Liste articles</h1>
<table>
<thead>
<th>Id</th>
<th>Nom</th>
</thead>
<tbody>
<!-- @... le language Blade -->
@foreach($lesArticles as $art)
<tr>
<td>{{$art->id}}</td>
<td>{{$art->nom}}</td>
</tr>
@endforeach
</tbody>
</table>
Créer une route pour la fonction AfficherListeArticles dans le fichier web.php
Route::get('/listeArticles',"App\Http\Controllers\ArticlesController@AfficherListeArticles");