Wat ga je maken?

De knoppen "Category" en "Other Filters" uit het voorbeeldontwerp gaan echt werken. Je bezoeker kiest een categorie en ziet alleen de artikelen uit die categorie.

Waarom is dit nuttig?

Filteren is de standaardvraag bij elke webshop, vacaturebank en portfolio. Je leert hier bovendien hoe je een query stap voor stap opbouwt in plaats van in één keer.

Stappenplan

  1. Beslis eerst: filter je via de URL (/artikelen?category=techniques) of via een POST-formulier? Kies de URL. Dan kan iemand een gefilterde lijst delen en werkt de terugknop van de browser.
  2. Lees de filterwaarde uit met $request->query('category').
  3. Bouw je query op met when(), zodat het filter alleen wordt toegepast als er een waarde is.
  4. Verplaats de filterlogica daarna naar een query scope op je model. Je controller wordt daar veel leesbaarder van.
  5. Zorg dat het gekozen filter zichtbaar blijft in het formulier (selected op de juiste <option>).
  6. Combineer met pagination: plak >withQueryString() erachter, anders ben je je filter kwijt op pagina 2.

Kleine hulpmiddelen

// Startpunt in je controller — vul zelf aan met je eigen kolommen
$posts = Post::query()
    ->when($request->query('category'), function ($query, $slug) {
        $query->whereHas('category', fn ($q) => $q->where('slug', $slug));
    })
    ->latest()
    ->paginate(9)
    ->withQueryString();
// Netter: een scope in app/Models/Post.php
public function scopeFilter($query, array $filters)
{
    // hier komt jouw logica
}

// In de controller wordt het dan:
Post::filter($request->only(['category', 'search']))->paginate(9);

Valkuilen