Vous êtes sur la page 1sur 18

BACK END FULL STACK 201 & 204 IFMOTICA FES

CRUD AVEC LARAVEL TP 01


Nous apprendrons comment créer une application web sur la Laravel utilisant les opérations de
base : Créer, Lire, Modifier et Supprimer les informations des employées

Étape 1 : Installation de Laravel 9

Composer create-project laravel/laravel pr02

Étape 2 : Configuration de la base de données

Maintenant il est temps de configurer notre base de données.


Avant tout, rendez vous dans votre espace PhpMyadmin et créer
une base de données vide, puis ouvrez le fichier .env de votre
projet et changer le nom de votre base de données
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=BDEmployer
DB_USERNAME=root
DB_PASSWORD=root

Étape 3 : Création de la table en utilisant la migration


Soit la table employé suivante : Employé (Numéro, nom, poste,
entreprise, salaire)

Pour commencer, créons le Model et la migration de notre table.

Ouvrez le terminal et taper la commande ci-dessous pour créer les


fichiers du Model et de la migration.

php artisan make:model Employe --migration

Apres la commande, deux fichiers seront créer :

databases/migrations/2022_X_X_XXXXX_create_employes_ta
ble.php et app/Models/Employe.php

Ouvrez donc le fichier de migration et ajuster les codes comme


suis :

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateEmployesTable extends Migration


{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('employes', function (Blueprint $table) {
$table->id();
$table->string('nom');
$table->text('poste');
$table->string('Societe');
$table->float('Salaire');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('employes');
}
}

Puis taper la commande suivante pour que la table soit créer dans
la base de données :
php artisan migrate

Étape 4 : Création du contrôleur

Taper la commande suivante pour créer un contrôleur :


php artisan make:controller EmployeController –resource

Ouvrez le contrôleur dans

app/Http/Controllers/EmployeController.php et ajuster les codes


ci-apres :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Employe;
class EmployeController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{

$employes = Employe::all();
return view('employe.index', compact('employes'));

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('employe.create');
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'nom'=>'required',
'prénom'=>'required',
'Ville'=> 'required',
'company' => 'required',
'Salaire' => 'required'
]);
$employe = new Employe();
$employe->nom= $request->input('nom');
$employe->prénom= $request->input('prénom');
$employe->Ville = $request->input('Ville');
$employe->company = $request->input('company');
$employe->Salaire= $request->input('Salaire');

$employe->save();
return redirect('/')->with('success', 'Employer Ajouté avec
succès');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$employe1 = Employe::find($id);
// $personnage = Personnage::findOrFail($id);
// return view('personnage.show', compact('personnage'));
return view('employe.show',['employe'=>$employe1]); }

/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$employe = Employe::findOrFail($id);

return view('employe.edit', compact('employe'));

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$request->validate([

'nom'=>'required',
'prénom'=>'required',
'Ville'=> 'required',
'company' => 'required',
'Salaire' => 'required'

]);
$employe1 = Employe::findOrFail($id);
$employe1->nom = $request->get('nom');
$employe1->prénom = $request->get('prénom');
$employe1->Ville = $request->get('Ville');
$employe1->company = $request->get('company');
$employe1->Salaire = $request->get('Salaire');

$employe1->update();

return redirect('/')->with('success', 'Employe Modifié avec


succès');
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$emp = Employe::findOrFail($id);
$emp->delete();

return redirect('/')->with('success', 'Employé a été supprimé


avec succès');
}
}

Ajouter ceci dans le model app/Models/Employe.php :


<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employe extends Model


{
use HasFactory;
}

Étape 5 : création des routes

Nous allons créer des routes en utlisant le group des routes avec la fonction controller de
Laravel 9 :

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\PersonnageController;
use App\Http\Controllers\EmployeController;
/*
|----------------------------------------------------------------------
----
| Web Routes
|----------------------------------------------------------------------
----
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::controller(EmployeController::class)->group(function () {

Route::get('/employe', 'index');
Route::get('/employe/create', 'create');
Route::get('/employe/{id}', 'show');
Route::get('/employe/{id}/edit', 'edit');

Route::post('/employe', 'store');
Route::patch('/employe/{id}', 'update');
Route::delete('/employe/{id}', 'destroy');

});

Étape 6 : Création des interfaces avec Blade template

Finallement nous passons à la création des différentes pages dans le


dossier 'ressources/views'.

Voici les fichiers que vous allez créé :

layouts/app.blade.php

<!DOCTYPE html>
<html lang="fr">
<head>

<title>Liste des employés : insérer, Lire, modifier et


supprimer</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1">
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.m
in.css" rel="stylesheet" integrity="sha384-
EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous">

</head>

<body>

<div class="container mt-5">


@yield('content')
</div>

</body>

</html>
Taper la commande suivante pour lancer l'application :

php artisan serve

employe/index.blade.php

@extends('layouts.app')

@section('content')

<div class="row">

<div class="col-lg-11">

<h2>Liste des employés</h2>


</div>

<div class="col-lg-1">
<a class="btn btn-success" href="{{ url('employe/create')
}}">Ajouter</a>
</div>

</div>

@if ($message = Session::get('success'))

<div class="alert alert-success">


<p>{{ $message }}</p>
</div>

@endif

<table class="table table-bordered">

<tr>

<th>Numéro</th>
<th>Nom</th>
<th>prénom</th>
<th>Company</th>
<th>Ville</th>
<th>Salaire</th>
<th>Actions</th>

</tr>

@foreach ($employes as $index => $employe)

<tr>
<td>{{ $index+1 }}</td>
<td>{{ $employe->nom }}</td>
<td>{{ $employe->prénom }}</td>
<td>{{ $employe->company }}</td>
<td>{{ $employe->Ville }}</td>
<td>{{ $employe->Salaire }}</td>
<td>
<form action="{{ url('employe/'. $employe->id) }}"
method="POST">
@csrf
@method('DELETE')

<a class="btn btn-info" href="{{


url('employe/'. $employe->id) }}">Voir</a>
<a class="btn btn-primary" href="{{
url('employe/'. $employe->id .'/edit') }}">Modifier</a>

<button type="submit" class="btn btn-


danger">Supprimer</button>

</form>
</td>

</tr>

@endforeach
</table>

@endsection

employe/create.blade.php

Après ajout
@extends('layouts.app')

@section('content')

<h1>Ajouter un employé</h1>

@if ($errors->any())

<div class="alert alert-danger">

<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach

</ul>

</div>

@endif

<form action="{{ url('employe') }}" method="POST">


@csrf

<div class="form-group mb-3">


<label for="nom">Nom :</label>
<input type="text" class="form-control" id="nom"
placeholder="Entrez un nom" name="nom">
</div>
<div class="form-group mb-3">
<label for="nom">Prénom :</label>
<input type="text" class="form-control" id="prénom"
placeholder="Entrez un prénom" name="prénom">
</div>

<div class="form-group mb-3">

<label for="company">Company:</label>
<input type="text" class="form-control" id="company"
placeholder="Company" name="company">

</div>

<div class="form-group mb-3">


<label for="Salaire">Salaire (DH):</label>
<input type="number" class="form-control" id="Salaire"
placeholder="Salaire" name="Salaire">
</div>

<div class="form-group mb-3">


<label for="detail">Ville:</label>
<textarea class="form-control" id="Ville" name="Ville"
rows="10" placeholder="Adresse"></textarea>
</div>

<button type="submit" class="btn btn-


primary">Enregister</button>

</form>

@endsection

employe/show.blade.php
@extends('layouts.app')

@section('content')

<h1>afficher détail d'un employé</h1>

<table class="table table-bordered">

<tr>
<th>Nom:</th>
<td>{{ $employe->nom }}</td>
</tr>
<tr>
<th>Prénom:</th>
<td>{{ $employe->prénom }}</td>
</tr>
<tr>

<th>Société:</th>
<td>{{ $employe->company }}</td>

</tr>

<tr>

<th>Ville:</th>
<td>{{ $employe->Ville}}</td>

</tr>

<tr>

<th>Salaire:</th>
<td> {{ $employe->Salaire }} DH</td>

</tr>

</table>

@endsection

employe/edit.blade.php
Après la modification
@extends('layouts.app')

@section('content')

<h1>Modifier employé</h1>

@if ($errors->any())

<div class="alert alert-danger">

<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>

</div>

@endif

<form method="post" action="{{ url('employe/'. $employe->id) }}" >


@method('PATCH')
@csrf

<div class="form-group mb-3">

<label for="nom">Nom:</label>
<input type="text" class="form-control" id="nom"
placeholder="Entrer Nom" name="nom" value="{{ $employe->nom }}">

</div>
<div class="form-group mb-3">

<label for="prénom">Prénom:</label>
<input type="text" class="form-control" id="prénom"
placeholder="Entrer prénom" name="prénom" value="{{ $employe->prénom
}}">

</div>

<div class="form-group mb-3">


<label for="company">Company:</label>
<input type="text" class="form-control" id="company"
placeholder="Entrer Company" name="company" value="{{ $employe->company
}}">

</div>

<div class="form-group mb-3">

<label for="fortune">SALAIRE (DH):</label>


<input type="number" class="form-control" id="Salaire"
placeholder="Salaire" name="Salaire" value="{{ $employe->Salaire }}">

</div>

<div class="form-group mb-3">

<label for="detail">Adresse:</label>
<textarea class="form-control" id="Ville" name="Ville"
rows="10" placeholder="Ville">{{ $employe->Ville }}</textarea>

</div>

<button type="submit" class="btn btn-


primary">Enregistrer</button>

</form>

@endsection

Supprimer :

Vous aimerez peut-être aussi