Accent Fields

Options

Declared legal values — four methods, two stored shapes, cardinality is the contract.


A field whose legal values are declared: label/value pairs carried in the registry, offered by the editor, enforced at the write boundary. One family, four methods — and underneath them, exactly two stored shapes, decided by cardinality:

Method Picks Stores The template asks
Select one of N the value, a string === 'sold_out'
Radio one of N the value, a string === 'sold_out'
Checkboxes any of N a json list .includes('press')
Multi-select any of N a json list .includes('press')

Methods in a row store identically — swap Select for Radio and no template changes. Methods across rows do not: cardinality is the contract, the method is the affordance, and the stored shape follows the first, never the second. A checkboxes field with max_items: 1 still stores a list, because what a field stores must never depend on a setting a template cannot see.

The name is ProcessWire's, and so is the shape of the family: one Options concept, the input widget decided per field.

One word, two meanings — read this first

A field's option list is not the options namespace. The namespace (see Fields) holds render configuration — width, alignment, variant — and is fenced out of SEO and social surfaces. A field's options are the choices its value may take, and the field lives wherever it is assigned, content included. Same word, two jobs — the possessive tells them apart: the field's options versus the asset's options.

Labels are for people, values are the contract

Every option is a pair. The value is what gets stored, compared and queried; the label is what an author reads. Rewording a label is free and changes no record; changing a value is a migration, because every stored row still holds the old one.

sold_out | Sold out      ← value | label
past     | Past

Declaring the list

The option list lives on the field, so every assignment of it offers the same choices — declare Status once and every content type that uses it agrees on what a status is. In the admin, the two stored shapes surface as two field types: Select and Select (multiple), each taking the same one-option-per-line list.

When not to use options

  • Two states, forever — that is a toggle. Reach here the moment a third state appears.
  • An open set (tags, categories that grow) — options are for CLOSED sets; an open one wants a reference to real assets or plain text.
  • Choosing another asset — that is a reference; an option list mirroring your pages is a hand-maintained copy of the site.