$pages->when()
The when method only executes the given Closure when the first parameter is true. If the first parameter is false, the Closure will not be executed.
$pages->when(mixed $condition, Closure $callback, ?Closure $fallback = null): mixed
Parameters
| Name | Type | Default |
|---|---|---|
| $condition * | mixed |
– |
| $callback * | Closure |
– |
| $fallback | Closure|null |
null |
Return type
mixed
Parent class
Kirby\Cms\Pages inherited from Kirby\Toolkit\Collection
Examples
Apply the filter method only if the first parameter evaluates to true:
$size = get('size');
$color = get('color');
$fit = get('fit');
$products = $page->children()
->when($size, fn ($size) => $this->filterBy('size', $size))
->when($color, fn ($color) => $this->filterBy('color', $color))
->when($price, fn ($fit) => $this->filterBy('style', $fit));
With a fallback if the first parameter does not evaluate to true:
$sortBy = false;
$articles = $page->children()
->when(
$sortBy,
fn ($sortBy) => $this->sortBy($sortBy),
fn () => $this->sortBy('title')
);