octobercms/october · error · ApplicationException
The property name is not specified.
Error message
The property name is not specified.
What it means
Thrown by the InspectableContainer::onInspectableGetOptions backend AJAX handler when the request carries no non-empty inspectorProperty POST field. The Inspector UI posts this field automatically when a property editor with dynamic options (e.g. a dropdown with dynamicOptions enabled) asks the server for its option list. An empty value almost always means the inspector control schema is missing the `property` key, so the frontend has nothing meaningful to send.
Source
Thrown at modules/backend/traits/InspectableContainer.php:25
* InspectableContainer is an extension for controllers that can host
* inspectable widgets (Components, etc.)
*
* @package october\backend
* @author Alexey Bobkov, Samuel Georges
*/
trait InspectableContainer
{
/**
* onInspectableGetOptions
*/
public function onInspectableGetOptions()
{
// Disable asset broadcasting
$this->flushAssets();
$property = trim(post('inspectorProperty'));
if (!$property) {
throw new ApplicationException('The property name is not specified.');
}
$className = trim(post('inspectorClassName'));
if (!$className || $className === 'undefined') {
throw new ApplicationException('The inspectable class name is not specified.');
}
$traitFound = in_array(\System\Traits\PropertyContainer::class, class_uses_recursive($className));
if (!$traitFound) {
throw new ApplicationException('Dynamic Inspector control options cannot be loaded for the specified class.');
}
$obj = new $className(null);
$obj->setProperties(post());
// Nested properties have names like object.property.
// Convert them to Object.Property.
$propertyNameParts = explode('.', $property);View on GitHub (pinned to b608633a7e)
Solutions
- Add the `property` key to the offending inspector control definition, e.g. { property: 'size', title: 'Size', type: 'dropdown', dynamicOptions: true }.
- If you call onInspectableGetOptions manually, include a non-empty inspectorProperty value in the POST body.
- Inspect the rendered schema (or browser devtools network tab) to find the request with the missing field and fix that specific control.
- Clear browser/asset caches after fixing so the corrected schema is served.
Example fix
// before
{ title: 'Size', type: 'dropdown', dynamicOptions: true }
// after
{ property: 'size', title: 'Size', type: 'dropdown', dynamicOptions: true } Defensive patterns
Strategy: validation
Validate before calling
// Before letting a control request dynamic options
const property = (control.property || '').trim();
if (!property) {
console.error('Inspector control missing property key:', control);
return;
}
const payload = {
inspectorProperty: property,
inspectorClassName: this.serverClassName
}; Type guard
function hasInspectorProperty(control) {
return typeof control.property === 'string' && control.property.trim().length > 0;
} Prevention
- Give every inspector control a `property` key, especially when dynamicOptions is enabled
- Lint inspector data schemas in plugin tests for dynamicOptions controls lacking `property`
- Never hand-build requests to onInspectableGetOptions; let the Inspector UI send them
When it happens
Trigger: A POST request to a controller using InspectableContainer hits onInspectableGetOptions with inspectorProperty absent, empty, or whitespace-only. Typical producer: an inspector data-schema entry like {title:'Size', type:'dropdown', dynamicOptions:true} that omits `property`, or custom JavaScript invoking the handler directly without the field.
Common situations: Custom inspector controls or CMS component inspector schemas in a plugin that forget the `property` key; copy-pasted control definitions where the property line was dropped; hand-rolled AJAX calls to the handler from tests or custom JS; a computed property name that resolves to an empty string.
Related errors
- The inspectable class name is not specified.
- Object list value should be an object. Property: ${this.prop
- Values not found for the selected row.
- Trying to get selected row without a popup reference.
- cms::lang.partial.invalid_name
AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21).
Data as JSON: /api/errors/53899726703bc4aa.
Report an issue: GitHub.