0% found this document useful (0 votes)
38 views11 pages

Lara Rev

Uploaded by

aminamnioui01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views11 pages

Lara Rev

Uploaded by

aminamnioui01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Contrôle

Partie théorique :

QCM :
1. b
2. c
3. a
4. a
5. b
6. a

Partie pratique :

1) composer create-project laravel/laravel gestion_automobile

2) Déplacer vers : .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auto_db
DB_USERNAME=root
DB_PASSWORD=

3)

 La Commande de création : php artisan make:model Car

 Déplacer vers : app/models/Car.php

<?php

namespace App\Models;

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

class Car extends Model


{
use HasFactory;
protected $table = 'cars';

protected $fillable = [
'Nom',
'Prix',
'Marque_id',
'Annee',
'image',
];

public function marque()


{
return $this->belongsTo(Marque::class, 'id', 'Marque_id');
}
}

4)

 Route : Déplacer vers : routes/web.php

<?php

use App\Http\Controllers\CarsController;
use Illuminate\Support\Facades\Route;

Route::get('/cars',CarsController::class['index'])->name('cars.index');

 Controller :

i. Commande de création : php artisan make:controller CarsController


1. Déplacer vers : app/controllers/CarsController.php
<?php
namespace App\Http\Controllers;
use App\Models\Car;

class CarsController extends Controller


{
public function index()
{
$cars = Car::paginate(5);
return view('cars.index', compact('cars'));
}}
ii. Ajouter Bootstrap au AppServiceProvider pour la pagination avec Bootstrap

<?php

namespace App\Providers;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider


{

public function register(): void


{
//
}

public function boot(): void


{
Paginator::useBootstrap();
}
}

 View :

i. Déplacer vers : resources/views/cars/index.blade.php

@extends('default')

@section('content')
<h1>Cars</h1>
<ul>
@foreach ($cars as $car)
<li>
<img
src="{{ asset('storage/cars' . $car->image) }}"
alt="{{ $car->Nom }}"
>
<p>{{ $car->Nom }}</p>
<p>{{ $car->Prix }}</p>
<p>{{ $car->marque->nom ?? 'pas de marque' }}</p>
<p>{{ $car->Annee }}</p>
</li>
@endforeach
</ul>
{{ $cars->links() }}
@endsection
5)
 1ère étape : ajouter formulaire de filtration à la vue

<form>
<div>
<label for="marques">Marques</label>
<select name="marque_id" id="marques">
<option value="">--------------</option>
@foreach ($marques as $marque)
<option value="{{ $marque->id }}"
@if ($request->marque_id == $marque->id)
selected @endif
>
{{ $marque->nom }}</option>
@endforeach
</select>
</div>
<div>
<label for="prix_min">Prix min</label>
<input type="number" min="0" name="prix_min"
id="prix_min" value="{{ $request->prix_min }}">
</div>
<div>
<label for="prix_max">Prix max</label>
<input type="number" name="prix_max"
id="prix_max" value="{{ $request->prix_max }}">
</div>
<button type="submit">Filtrer</button>
</form>

 2eme étape : appliquer la filtration au controller (ajout de query) pour filtrer les voitures
selon les choix :

public function index(Request $request)


{
$query = Car::query();
if ($request->has('marque_id') && $request->marque_id != null) {
$query->where('marque_id', $request->marque_id);
}

if ($request->has('prix_min') && $request->prix_min != null) {


$query->where('Prix', '>=', $request->prix_min);
}

if ($request->has('prix_max') && $request->prix_max != null) {


$query->where('Prix', '<=', $request->prix_max);
}

$cars = $query->paginate(5);
$marques = Marque::all();
return view('cars.index', compact('cars', 'marques', 'request'));
}

 3eme étape : changer les liens de pagination pour inclure les filtrations :

{{ $cars->withQueryString()->links() }}

6)
 Factory :
i. Commande de création : php artisan make:factory CarFactory --model=Car

<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;

class CarFactory extends Factory


{
public function definition(): array
{
return [
'Nom' => $this->faker->word,
'Prix' => $this->faker->numberBetween(1000, 50000),
'Marque_id' => $this->faker->numberBetween(1, 18),
'Annee' => $this->faker->dateTimeBetween('-23 years', 'now'),
'image' => $this->faker->imageUrl(),
];
}
}

 Seeder :
i. Commande de création : php artisan make:seeder CarSeeder

<?php

namespace Database\Seeders;

use App\Models\Car;
use Illuminate\Database\Seeder;

class CarSeeder extends Seeder


{
public function run(): void
{
Car::factory()->count(100)->create();
}
}

ii. Commande d’exécution : php artisan db:seed --class=CarSeeder

7)
 Commandes pour installer Laravel ui :
i. composer require laravel/ui
ii. php artisan ui bootstrap –-auth

 Ajouter les routes d’authentication au routes/web.php:

Auth::routes();

 Ajouter la route de création des voitures et le middleware auth pour que seulement les
utilisateurs authentifiés peuvent accéder à cette page :

Route::get('/cars/create',[CarsController::class,'create'])
->name('cars.create')->middleware('auth');

8)
 Deplacer vers resources/views/default.blade.php

<nav class="navbar navbar-expand-lg navbar-light bg-light justify-content-end">


<ul class="navbar-nav">
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('login') }}">Login</a>
</li>
<li class="nav-item">
<a class="nav-link"
href="{{ route('register')}}">Register</a>
</li>
@else
<li class="nav-item">
<span class="nav-link">{{ Auth::user()->name }}</span>
</li>
<li class="nav-item">
<form action="{{ route('logout') }}" method="POST">
@csrf
<button type="submit" class="btn btn-link
nav-link">Logout</button>
</form>
</li>
@endguest
</ul>
</nav>

9)
 Créer le controller ApiCarsController :
i. Commande de création : php artisan make:controller API/ApiCarsController
ii. Deplacer vers : app/http/Controllers/Api/ ApiCarsController.php

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Car;

class ApiCarsController extends Controller


{
public function index()
{
$cars = Car::all();
return response()->json($cars);
}
}

 Ajouter la route au fichier : routes/api.php

<?php

use App\Http\Controllers\Api\ApiCarsController;
use Illuminate\Support\Facades\Route;

Route::get('/cars', [ApiCarsController::class, 'index']);

 L’url est : http://127.0.0.1:8000/api/cars


10) Pour utiliser Laravel Sanctum pour l'authentification avec token dans votre API Laravel, suivez
ces étapes :
1. Installer Sanctum par les commands suivants :

$ composer require laravel/sanctum


$ php artisan vendor:publish --
provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrate

2. Créer le controller UserAuthController:


a. Commande de creation :

$ php artisan make:controller UserAuthController

b. Ajouter les fonctions de register, login et logout :

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class UserAuthController extends Controller


{
public function register(Request $request)
{
$registerUserData = $request->validate([
'name' => 'required|string',
'email' => 'required|string|email|unique:users',
'password' => 'required|min:8'
]);
$user = User::create([
'name' => $registerUserData['name'],
'email' => $registerUserData['email'],
'password' => Hash::make($registerUserData['password']),
]);
return response()->json([
'message' => 'User Created ',
]);
}

public function login(Request $request)


{
$loginUserData = $request->validate([
'email' => 'required|string|email',
'password' => 'required|min:8'
]);
$user = User::where('email', $loginUserData['email'])->first();
if (!$user || !Hash::check($loginUserData['password'],
$user->password)) {
return response()->json([
'message' => 'Invalid Credentials'
], 401);
}
$token = $user->createToken($user->name . '-AuthToken')
->plainTextToken;
return response()->json([
'access_token' => $token,
]);
}

public function logout()


{
auth()->user()->tokens()->delete();

return response()->json([
"message" => "logged out"
]);
}
}

3. Ajouter les Api au fichier routes/api.php :

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserAuthController;

Route::post('register', [UserAuthController::class, 'register']);


Route::post('login', [UserAuthController::class, 'login']);
Route::post('logout', [UserAuthController::class, 'logout'])
->middleware('auth:sanctum');

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy