Common Errors and How to Debug Them: Empty Grid, Form Not Saving, Missing Cache Invalidation
Common Errors and How to Debug Them: Empty Grid, Form Not Saving, Missing Cache Invalidation
~9 Min. Lesezeit Zuletzt aktualisiert am August 9, 2026
This chapter collects the failure patterns that have already been mentioned individually throughout the series, and adds a systematic debugging order - the three most common symptoms in UI Components work.
Symptom 1: empty grid with no error message
The most common cause is a wrong provider chain (chapter 4): the value in js_config/provider must exactly match {listing_name}.{dataSource_name}. Steps to check, in order:
- Open the browser network tab, filter for
mui/index/render- does the request even arrive, and what does the response return? - For a JSON response with an empty
itemsarray: check the DataProvider's filter logic, especially accidentally too-narrowaddFieldToFilter()calls. - For no request at all: compare the
providerchain injs_configagainst the actual dataSource name. - For a 404/500 on
mui/index/render: check the PHP exception log (bin/log exception.log) - usually a typo in the class name of thedataProviderargument.
Symptom 2: form doesn't save (or nothing visibly happens)
- Redirect to a 404 - the save controller doesn't implement
HttpPostActionInterface(chapter 12), orsubmit_urlinform.xmlpoints to the wrong path. - Page reloads but with no visible change - a validation error without
DataPersistorInterface(chapter 12); the error appears as a session message but is easy to miss. - Save button doesn't react at all - usually a JavaScript error in the browser console, often from a broken
validationrule (chapter 11) or a missing<field>that animports/exportspath (chapter 21) references.
Symptom 3: an XML/PHP change doesn't show up
Different file types land in different caches - knowing the right cache to clear saves a lot of time:
listing.xml/form.xmlchanges -bin/cache-cleanis usually enough (UI Component and layout cache, chapter 4).acl.xml/menu.xmlchanges -cache:cleanplus possibly an admin logout/login (chapter 3).- A new/changed PHP class - with an active
di.xmlcompile (production mode),setup:di:compileis required; in developer mode,cache:cleanis usually enough. db_schema.xmlchanges - alwayssetup:upgrade, never just cache commands (chapter 2).
Achtung: A class-not-found or "argument missing" error right after a di.xml change (for example a new modifier entry, chapter 13) is almost always a compile cache issue: new constructor arguments or new virtualType entries only take effect in production mode after setup:di:compile - sometimes only after a second run, if the first compilation itself fails.
A systematic debugging order
- Browser console and network tab first - many problems are visible purely client-side before touching any PHP code.
- Check
bin/log exception.logandbin/log system.logfor fresh entries. - For data problems: look directly in the database (
bin/mysql) for whether the expected rows/columns even exist. - Only after that: compare the XML declaration line by line against a known-working example (for example from chapter 15/16).
Tipp: This order - browser before server, logs before reading code, database before guessing - saves the most time in practice, because UI Components bugs rarely show up where you'd first suspect them.