Lara Rev
Lara Rev
Partie théorique :
QCM :
1. b
2. c
3. a
4. a
5. b
6. a
Partie pratique :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=auto_db
DB_USERNAME=root
DB_PASSWORD=
3)
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
protected $fillable = [
'Nom',
'Prix',
'Marque_id',
'Annee',
'image',
];
4)
<?php
use App\Http\Controllers\CarsController;
use Illuminate\Support\Facades\Route;
Route::get('/cars',CarsController::class['index'])->name('cars.index');
Controller :
<?php
namespace App\Providers;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider;
View :
@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 :
$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;
Seeder :
i. Commande de création : php artisan make:seeder CarSeeder
<?php
namespace Database\Seeders;
use App\Models\Car;
use Illuminate\Database\Seeder;
7)
Commandes pour installer Laravel ui :
i. composer require laravel/ui
ii. php artisan ui bootstrap –-auth
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
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;
<?php
use App\Http\Controllers\Api\ApiCarsController;
use Illuminate\Support\Facades\Route;
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
return response()->json([
"message" => "logged out"
]);
}
}
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserAuthController;