octobercms/october · warning · ApplicationException

The property name is not specified.

Error message

The property name is not specified.

What it means

HasPropertyOptions::onInspectableGetOptions is the AJAX handler the backend inspector calls to fetch dynamic dropdown options for a widget property. It reads the inspectorProperty POST parameter and trims it; if nothing remains it throws this ApplicationException. The property name is how getPropertyOptions() dispatches to the right options method, so an empty value cannot be processed.

Source

Thrown at modules/dashboard/widgets/dash/HasPropertyOptions.php:24

use Dashboard\Classes\ReportDataSourceBase;
use ApplicationException;

/**
 * HasPropertyOptions concern
 */
trait HasPropertyOptions
{
    /**
     * onInspectableGetOptions
     */
    public function onInspectableGetOptions()
    {
        // Disable asset broadcasting
        $this->flushAssets();

        $property = trim(post('inspectorProperty'));
        if (!$property) {
            throw new ApplicationException('The property name is not specified.');
        }

        $options = $this->getPropertyOptions($property);

        // Convert to array to retain the sort order in JavaScript
        $optionsArray = [];
        foreach ((array) $options as $value => $title) {
            $optionsArray[] = ['value' => $value, 'title' => Lang::get($title)];
        }

        return [
            'options' => $optionsArray
        ];
    }

    /**
     * getPropertyOptions returns options for multi-option properties (drop-downs, etc.)
     * @param string $property Specifies the property name

View on GitHub (pinned to b608633a7e)

Solutions

  1. Make sure the inspector field definition includes the property context so the framework posts inspectorProperty (e.g. the field is defined under properties with its name intact).
  2. In custom JS, append the property name: request('onInspectableGetOptions', { inspectorProperty: 'myProperty' }).
  3. Implement getPropertyOptions($property) on the widget so non-empty property names resolve; empty ones still fail fast by design.
  4. Check the network request payload for the inspectorProperty key before debugging deeper handler logic.

Example fix

// before (custom JS)
$.request('onInspectableGetOptions', { data: {} });

// after
$.request('onInspectableGetOptions', { data: { inspectorProperty: 'statusOptions' } });
Defensive patterns

Strategy: validation

Validate before calling

$property = trim((string) post('inspectorProperty'));
if ($property === '') {
    throw new \ValidationException(['inspectorProperty' => 'Property name is required']);
}

Try / catch

try {
    $options = $widget->onInspectableGetOptions();
} catch (\ApplicationException $e) {
    // inspector fired without a property: log and return empty options to the picker
    return ['options' => []];
}

Prevention

When it happens

Trigger: An inspector field configured with options: 'onInspectableGetOptions' but the AJAX request carries no inspectorProperty parameter; a custom inspector Vue component that invokes the options endpoint without passing the property name; whitespace-only property value from a broken form binding.

Common situations: Custom dashboard/report widget with a dropdown whose inspector definition references a handler but the request builder omits the property key; upgrading the backend where the inspector payload format changed; copying an options handler pattern into a new component without wiring the property attribute.

Related errors


AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21). Data as JSON: /api/errors/d77deab5c5aa4c0a. Report an issue: GitHub.