Skip to content



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

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, function ($size) {
        return $this->filterBy('size', $size);
    ->when($color, function ($color) {
        return $this->filterBy('color', $color);
    ->when($price, function ($fit) {
        return $this->filterBy('style', $fit);

With a fallback if the first parameter does not evaluate to true:

$sortBy = false;
$articles = $page->children()
    ->when($sortBy, function ($sortBy) {
        return $this->sortBy($sortBy);
    }, function () {
        return $this->sortBy('title');