Lightswitch Fields

Lightswitch fields give you a simple toggle input for times when all you need is a “Yes” or “No” answer.

Development

Querying Elements with Lightswitch Fields

When querying for elements that have a Lightswitch field, you can filter the results based on the Lightswitch field data using a query param named after your field’s handle.

Possible values include:

| Value | Fetches elements… | - | - | true or ':notempty:' | with an enabled Lightswitch value. | false or ':empty:' | with a disabled Lightswitch value.

{# Fetch entries with the Lightswitch field enabled #}
{% set entries = craft.entries()
  .myFieldHandle(true)
  .all() %}
// Fetch entries with the Lightswitch field enabled
$entries = \craft\elements\Entry::find()
    ->myFieldHandle(true)
    ->all();

Any elements that don’t have an explicit Lightswitch value set will be treated as if they have the default field value, per the field settings.

Working with Lightswitch Field Data

If you have an element with a Lightswitch field in your template, you can access its data using your Lightswitch field’s handle:

{% if entry.myFieldHandle %}
  <p>I’m on!</p>
{% else %}
  <p>I’m off.</p>
{% endif %}
if ($entry->myFieldHandle) {
    // I’m on!
} else {
    // I’m off.
}

If the element doesn’t have an explicit Lightswitch field value yet, the field’s default value will be returned.

Saving Lightswitch Fields

If you have an element form, such as an entry form, that needs to contain a Lightswitch field, you can use this template as a starting point:

{{ hiddenInput('fields[myFieldHandle]', '') }}

{{ tag('input', {
  type: 'checkbox',
  name: 'fields[myFieldHandle]',
  value: '1',
  checked: (entry.myFieldHandle ?? false) ? true : false,
}) }}