---
title: Filter binding and placement
description: Bind, read, and display filters in a view or zone.
---

A filter declaration has no URL namespace until you bind it to a view or zone.
A view filter uses `f[name]`. A zone filter uses `f[zone][name]`.

Use the same binding for two operations:

- Pass its owner to `ctx.parse` to read typed values.
- Pass it to `section.setFilters` or `panel.setFilters` to display controls.

## View binding

Pass a filter bar through the view options. The resolver receives the binding
as `view.state.filters`.

<BacklitExample path="filters/view_binding" view="list" />

## Read view filters

Call `ctx.parse(view).filters`. The result has one typed property for
each declared filter. A missing or invalid value is `undefined`.

<BacklitExample path="filters/parse_view" view="list" />

## Zone binding

Pass a filter bar through the zone options. Place `zone.state.filters` inside the
zone. A control change then requests only that zone.

<BacklitExample path="filters/zone_binding" view="detail" />

## Read zone filters

Call `ctx.parse(zone).filters`. Backlit reads values from that zone scope.

<BacklitExample path="filters/parse_zone" view="detail" />

## Place filters in a section

A filter bar is not a content block. A section has a separate slot for it.

<BacklitExample path="filters/section" view="list" />

## Place filters in a panel

A panel has the same separate filter slot.

<BacklitExample path="filters/panel" view="list" />
