octobercms/october · warning · Error
Object list key property ${this.propertyDefinition.keyProper
Error message
Object list key property ${this.propertyDefinition.keyProperty} is not defined in itemProperties. Property: ${this.propertyDefinition.property} What it means
The third PageLookup validation: when the `reference` form field is neither hidden nor disabled and the submitted reference value is empty, this ValidationException is thrown against `reference`. The reference names the exact target within the chosen type (a specific page, blog post, record, etc.), so an empty one cannot resolve at render time.
Source
Thrown at modules/backend/assets/foundation/controls/inspector/inspector.editor.objectlist.js:32
throw new Error('The titleProperty property should be specified in the objectList editor configuration. Property: ' + propertyDefinition.property)
}
if (propertyDefinition.itemProperties === undefined) {
throw new Error('The itemProperties property should be specified in the objectList editor configuration. Property: ' + propertyDefinition.property)
}
Base.call(this, inspector, propertyDefinition, containerCell, group)
}
ObjectListEditor.prototype = Object.create(BaseProto)
ObjectListEditor.prototype.constructor = Base
ObjectListEditor.prototype.init = function() {
if (this.isKeyValueMode()) {
var keyProperty = this.getKeyProperty()
if (!keyProperty) {
throw new Error('Object list key property ' + this.propertyDefinition.keyProperty
+ ' is not defined in itemProperties. Property: ' + this.propertyDefinition.property)
}
}
BaseProto.init.call(this)
}
ObjectListEditor.prototype.dispose = function() {
this.unregisterHandlers()
this.removeControls()
this.currentRowInspector = null
this.popup = null
BaseProto.dispose.call(this)
}
ObjectListEditor.prototype.supportsExternalParameterEditor = function() {View on GitHub (pinned to b608633a7e)
Solutions
- Choose a value in the reference dropdown (the page/post/record to link to) before inserting.
- If a type has no reference target, hide or disable the field in the widget configuration so the check is bypassed.
- Programmatic callers: include `reference` in the payload, e.g. `{ type: 'cms-page', reference: 'blog/post/1' }`.
Example fix
// before
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'cms-page', cms_page: 'about/index' } }
});
// after
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'cms-page', cms_page: 'about/index', reference: 'about/team' } }
}); Defensive patterns
Strategy: validation
Validate before calling
const item = { ...payload.PageLookupItem };
if (!item.reference && referenceFieldEnabled) {
showFlash('Please select a page reference.');
} else {
oc.request(el, 'pagelookup::onInsertReference', { data: { PageLookupItem: item } });
} Try / catch
try {
$result = $widget->onInsertReference();
} catch (October\Rain\Exception\ValidationException $e) {
$errors = $e->getErrors(); // ['reference' => 'Please select a page reference']
} Prevention
- Require a reference selection before enabling insert.
- If a type has no reference, hide or disable the reference field in the widget config so the check is skipped.
- Watch for empty reference dropdowns — they usually mean options failed to load.
When it happens
Trigger: Submitting the popup with the reference select empty while the field is editable; posting `PageLookupItem` data with `reference` missing or ''; disabling options that leave no selectable reference for the current type.
Common situations: Clicking insert before picking the target item; a type whose reference options failed to load (empty dropdown); tests submitting partial payloads.
Related errors
- The titleProperty property should be specified in the object
- The itemProperties property should be specified in the objec
- Object list value should be an array. Property: ${this.prope
- Object list value should be an object. Property: ${this.prop
- Values not found for the selected row.
AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21).
Data as JSON: /api/errors/5dfbed35e5a87197.
Report an issue: GitHub.