0% ont trouvé ce document utile (0 vote)
54 vues1 page

Gestion des Produits et Catégories en Laravel

Ce document décrit les bases d'un CRUD (Create Read Update Delete) pour la gestion d'une liste de produits avec Laravel. Il présente les routes, modèles, contrôleur, vues, seeder, factory et validation nécessaires.

Transféré par

relachab140
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
54 vues1 page

Gestion des Produits et Catégories en Laravel

Ce document décrit les bases d'un CRUD (Create Read Update Delete) pour la gestion d'une liste de produits avec Laravel. Il présente les routes, modèles, contrôleur, vues, seeder, factory et validation nécessaires.

Transféré par

relachab140
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Model Route Seeder

class Produit extends Model Route::get('/produits', [ProduitController::class, 'index'])- public function run(): void
{ >name('[Link]'); {
protected $fillable = ['categorie_id', 'autre_attribut1', 'autre_attribut2', ...]; Route::get('/produits/create', [ProduitController::class, 'create'])- User::create([
} >name('[Link]'); 'name'=>'othman',
Donner le code de la méthode "produits à ajouter au Route::post('/produits', [ProduitController::class, 'store'])- 'email'=>'othman02@[Link]',
>name('[Link]'); 'password'=>Hash::make('12345678'),
model Catégorie. Grâce à cette méthode nous pouvons Route::get('/produits/{produit}/edit', [ProduitController::class, 'edit'])- ]);
accéder à la collection des produits associés à une >name('[Link]'); php artisan db:seed --class=Userseeder
catégorie en accédant à la propriété "produits" Route::put('/produits/{produit}', [ProduitController::class, 'update'])-
class Catégorie extends Model >name('[Link]'); Factory
{ Route::delete('/produits/{produit}', [ProduitController::class, 'destroy'])- class UserFactory extends Factory
public function produits() >name('[Link]'); {
{ protected $model = User::class;
return $this->hasMany(Produit::class, 'categorie_id'); Index
} @extends('[Link]') public function definition()
} {
Migration @section('content') return [
public function up() <h1>Liste des produits</h1> 'name' => $this->faker->name,
{ 'email' => $this->faker->unique()->safeEmail,
Schema::create('categories', function (Blueprint $table) { <table> 'password' => Hash::make('password'), // You can customize the
$table->id(); <thead> default password value if needed
$table->string('nom'); <tr> ];
$table->decimal('prix'); <th>ID</th> }
$table->text('description'); <th>Catégorie</th> }
$table->string('image'); <th>Actions</th>
$table->foreignId('user_id')->constrained(); </tr>
$table->timestamps(); // Ajout des colonnes "created_at" et </thead>
"updated_at" <tbody>
}); @foreach ($produits as $produit)
} <tr>
Controller <td>{{ $produit->id }}</td>
class ProduitController extends Controller <td>{{ $produit->categorie->nom }}</td>
{ <td>
public function index() <a href="{{ route('[Link]', $produit) }}">Éditer</a>
{ <form action="{{ route('[Link]', $produit) }}"
$produits = Produit::all(); method="POST" style="display: inline">
return view('index', compact('produits')); @csrf
} @method('DELETE')
<button type="submit">Supprimer</button>
public function create()
</form>
{
</td>
return view('create');
} </tr>
@endforeach
public function store(Request $request) </tbody>
{ </table>
$produit = new Produit([ @endsection
'nom' => $request->nom,
'prix' => $request->prix,
'description' => $request->description,
Validate
'categorie_id' => $request->categorie_id, public function store(Request $request)
]); {
// Valider les données du formulaire
// Sauvegarder le produit dans la base de données $request->validate([
$produit->save(); 'nom' => 'required|max:255',
// Rediriger vers la page d'accueil ou une autre vue 'prix' => 'required|numeric|min:0',
return redirect()->route('[Link]')->with('success', 'Produit ajouté avec 'description' => 'required',
succès'); 'categorie_id' => 'required|exists:categories,id',
} ]);
public function edit(Produit $produit) Middleware
{ php artisan make:middleware AuthMiddleware
return view('edit', compact('produit')); public function handle($request, Closure $next)
} {
if (!Auth::check()) {
public function update(Request $request, Produit $produit) return redirect()->route('login');
{ }
// Valider les données du formulaire
$request->validate([
return $next($request);
'categorie_id' => 'required',
// Ajoutez ici la validation des autres attributs du formulaire }
]); Route::middleware([AuthMiddleware::class])->group(function () {

// Mettre à jour les attributs du produit avec les données du formulaire Add column
$produit->update([ php artisan make:migration add_image_to_produits_table --
'categorie_id' => $request->categorie_id,
table=produits
// Ajoutez ici les autres attributs du formulaire
public function up()
]);
{
// Rediriger vers la page d'accueil ou une autre vue Schema::table('produits', function (Blueprint $table) {
return redirect()->route('[Link]')->with('success', 'Produit mis à jour $table->string('image')->nullable();
avec succès'); });
} }

public function destroy(Produit $produit) public function down()


{ {
// Supprimer le produit de la base de données Schema::table('produits', function (Blueprint $table) {
$produit->delete();
$table->dropColumn('image');
});
// Rediriger vers la page d'accueil ou une autre vue
return redirect()->route('[Link]')->with('success', 'Produit supprimé avec }
succès');
}
}

Vous aimerez peut-être aussi