ajout de filtre de guides et informations

This commit is contained in:
2026-05-14 19:09:28 +02:00
parent 4633805dbd
commit 89610b807c
4 changed files with 65 additions and 15 deletions
@@ -8,13 +8,23 @@ use Illuminate\Http\Request;
class InformationController extends Controller
{
public function index()
public function index(Request $request)
{
$informations = Information::where('is_published', true)
->orderBy('created_at', 'desc')
->paginate(6);
$query = Information::where('is_published', true);
return view('informations.index', compact('informations'));
if ($request->has('category') && $request->category != '') {
$query->where('category', $request->category);
}
$informations = $query->orderBy('created_at', 'desc')
->paginate(6)
->withQueryString();
$categories = Information::where('is_published', true)
->distinct()
->pluck('category');
return view('informations.index', compact('informations', 'categories'));
}
public function show($id)
@@ -10,11 +10,21 @@ use Illuminate\Support\Facades\Auth;
class RelaxationController extends Controller
{
public function index()
public function index(Request $request)
{
$activities = RelaxationActivity::all();
$favorites = [];
return view('relaxation.index', compact('activities', 'favorites'));
$query = RelaxationActivity::query();
if ($request->has('category') && $request->category != '') {
$query->where('category', $request->category);
}
$activities = $query->get();
$categories = RelaxationActivity::distinct()->pluck('category');
$favorites = []; // TODO: Implémenter la logique des favoris si nécessaire
return view('relaxation.index', compact('activities', 'favorites', 'categories'));
}
public function toggleFavorite($id)
@@ -2,11 +2,26 @@
@section('content')
<div class="container mx-auto px-4 py-8">
<div class="mb-8">
<div class="mb-8 flex flex-col md:flex-row md:items-end md:justify-between gap-4">
<div>
<h1 class="text-3xl font-bold text-indigo-900">Informations & Santé Mentale</h1>
<p class="text-gray-600">Découvrez nos conseils et articles pour mieux gérer votre quotidien.</p>
</div>
<div class="flex flex-wrap gap-2">
<a href="{{ route('informations.index') }}"
class="px-4 py-2 rounded-full text-sm font-medium transition-colors {{ !request('category') ? 'bg-indigo-600 text-white' : 'bg-gray-100 text-gray-600 hover:bg-gray-200' }}">
Toutes
</a>
@foreach($categories as $category)
<a href="{{ route('informations.index', ['category' => $category]) }}"
class="px-4 py-2 rounded-full text-sm font-medium transition-colors {{ request('category') == $category ? 'bg-indigo-600 text-white' : 'bg-gray-100 text-gray-600 hover:bg-gray-200' }}">
{{ $category }}
</a>
@endforeach
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
@foreach($informations as $info)
<div class="bg-white rounded-2xl shadow-sm border border-gray-100 overflow-hidden hover:shadow-md transition-shadow">
+16 -1
View File
@@ -74,11 +74,26 @@
<!-- Section Activités -->
<div class="space-y-8">
<div class="flex items-center gap-4">
<div class="flex flex-col md:flex-row md:items-center justify-between gap-4">
<div class="flex items-center gap-4 flex-1">
<h2 class="text-xl font-bold text-slate-900 uppercase tracking-widest whitespace-nowrap">Bibliothèque Méditation</h2>
<div class="h-1 flex-1 bg-slate-100"></div>
</div>
<div class="flex flex-wrap gap-2">
<a href="{{ route('relaxation.index') }}"
class="px-4 py-2 rounded-full text-[10px] font-bold uppercase transition-all {{ !request('category') ? 'bg-[--fr-blue] text-white shadow-md' : 'bg-slate-100 text-slate-600 hover:bg-slate-200' }}">
Toutes
</a>
@foreach($categories as $category)
<a href="{{ route('relaxation.index', ['category' => $category]) }}"
class="px-4 py-2 rounded-full text-[10px] font-bold uppercase transition-all {{ request('category') == $category ? 'bg-[--fr-blue] text-white shadow-md' : 'bg-slate-100 text-slate-600 hover:bg-slate-200' }}">
{{ $category }}
</a>
@endforeach
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
@forelse($activities as $activity)
<div class="bg-white rounded-sm border-2 border-slate-200 overflow-hidden flex flex-col shadow-sm group hover:border-[--fr-blue] transition-all">