octobercms/october · warning · Error
The itemProperties property should be specified in the objec
Error message
The itemProperties property should be specified in the objectList editor configuration. Property: ${propertyDefinition.property} What it means
In PageLookup::onInsertReference, after a type is supplied the widget checks the `cms_page` form field: if that field is not hidden and the submitted data contains no `cms_page` key, this ValidationException is raised against the `cms_page` field. It exists to force the user to pick which CMS page will host or resolve the inserted link.
Source
Thrown at modules/backend/assets/foundation/controls/inspector/inspector.editor.objectlist.js:18
/*
* Inspector object list editor class.
*/
+function ($) { "use strict";
var Base = $.oc.inspector.propertyEditors.base,
BaseProto = Base.prototype
var ObjectListEditor = function(inspector, propertyDefinition, containerCell, group) {
this.currentRowInspector = null
this.popup = null
if (propertyDefinition.titleProperty === undefined) {
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)
}
}
View on GitHub (pinned to b608633a7e)
Solutions
- Select a CMS page in the popup's dropdown before inserting the link.
- If the chosen type does not need a CMS page, hide the field in the widget's field config so the check is skipped (`$widget->getField('cms_page')->hidden` is truthy).
- When calling the handler programmatically, always include `cms_page` in the payload when the field is visible.
Example fix
// before
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'cms-page' } }
});
// after
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'cms-page', cms_page: 'about/index' } }
}); Defensive patterns
Strategy: validation
Validate before calling
const item = { ...payload.PageLookupItem };
if (!item.cms_page && cmsPageFieldVisible) {
showFlash('Please select a CMS page.');
} else {
oc.request(el, 'pagelookup::onInsertReference', { data: { PageLookupItem: item } });
} Try / catch
try {
$result = $widget->onInsertReference();
} catch (October\Rain\Exception\ValidationException $e) {
$errors = $e->getErrors(); // ['cms_page' => 'Please select a CMS page']
} Prevention
- Mark the CMS page dropdown required in the popup UI.
- Hide the cms_page field server-side for types that do not need it (the check skips hidden fields).
- Include cms_page in programmatic payloads whenever the field is visible.
When it happens
Trigger: Submitting the lookup popup with the CMS page dropdown left empty while the `cms_page` field is visible (depends on the chosen type and widget configuration); posting `PageLookupItem` data that omits `cms_page`.
Common situations: Users clicking insert before choosing a page; field configuration that shows `cms_page` for a type that does not need it; automated submissions missing the key.
Related errors
- The titleProperty property should be specified in the object
- Object list key property ${this.propertyDefinition.keyProper
- 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/163902dcff9b821f.
Report an issue: GitHub.