Troubleshooting

Each of these has a specific cause. None of them needs guesswork.

The page shows {legs:prices:render} as text

Nothing matched that handle, so Craft left the tag alone — deliberately, because a tag you can see is a tag you can fix, while a vanished table looks like an empty page. Check the handle in Legs → Tables; a renamed table takes its old handle with it. If the table is in the trash, restoring it may give it a suffixed handle, since something else may have taken the name.

There is no Table button in CKEditor

Toolbar items are per field. Open the field's settings and drag the Table button into the toolbar. If it is not in the list of available buttons at all, check that craftcms/ckeditor is 5.0 or later — older, DLL-based versions are deliberately left alone rather than half-supported, and embeds have to be typed there.

The Redactor button is missing

Legs adds itself to every Redactor config that does not declare a plugins list of its own. If yours does, add legs to it.

The table renders but nothing sorts

Three things to check, in order:

  1. Sortable is on in the table's options.
  2. registerJs is on in the settings — with it off, no runtime is loaded.
  3. Your layout actually calls {{ head() }} and {{ endBody() }}. Legs registers its assets while the table renders, and Craft has nowhere to put them otherwise.

A column sorts in the wrong order

Legs sniffs each column's type from its values. A column mixing 12 and 12 units is text, and sorts as text. Set the column's sort as explicitly if you know better — or make the values consistent, which is usually the real fix.

Numbers in a column are ignored by SUM

The formula evaluator reads numbers out of formatting, but a cell has to contain one. , n/a and an empty cell all contribute nothing rather than breaking the sum. If a whole column sums to zero, check that Evaluate formulas is on — without it, the cell renders as the text you typed.

A query table is not updating

Rebuilds are queued on a 30-second debounce, so a stalled queue looks exactly like a stale table — check Utilities → Queue Manager first. Then check that refreshOnElementSave is on, and that the element type you are saving matches the table's. Refresh now on the table rebuilds immediately and tells you the row count, which distinguishes “the query returns nothing” from “the rebuild never ran”.

XLSX import says PhpSpreadsheet is missing

It is a suggested dependency, not a required one. composer require phpoffice/phpspreadsheet and the option appears.

Editing the plugin's CSS or JS does nothing

Craft serves published copies of plugin assets. php craft clear-caches/cp-resources after editing anything under the plugin's web/assets, or you will debug stale files for an hour.

A table looks different on one site

It is probably translated. Open it, look at Content in the sidebar — Translated per site means each site has its own grid, and the note underneath says which one you are editing. Switching it back to The same on all sites copies the grid you are looking at over the others.

Still stuck

Open an issue on GitHub with the table's export (--format=json) attached. It contains the grid, the options and the merges, which is almost always enough to reproduce something.