Skip to content

Kirby 4.3.0


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


Name Type Default
$condition * mixed
$callback * Closure
$fallback Closure|null null

Return type


Parent class

Kirby\Cms\Pages inherited from Kirby\Toolkit\Collection


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()
            fn ($sortBy) => $this->sortBy($sortBy),
            fn () => $this->sortBy('title')