octobercms/october · warning · Error
Object list value should be an array. Property: ${this.prope
Error message
Object list value should be an array. Property: ${this.propertyDefinition.property} What it means
When the lookup type is 'url', PageLookupItem::isValidUrl must accept the submitted `url` value (it accepts strings starting with '#', '/', 'http://', 'https://', or mailto/tel/sms:, and otherwise falls back to PHP's FILTER_VALIDATE_URL). Missing `url` or an unparseable value throws this ValidationException — note it is attached to the `reference` field, so the popup highlights reference rather than the URL input.
Source
Thrown at modules/backend/assets/foundation/controls/inspector/inspector.editor.objectlist.js:94
}
if (value === undefined) {
var placeholder = this.propertyDefinition.placeholder
if (placeholder !== undefined) {
$.oc.foundation.element.addClass(link, 'cell-placeholder')
link.textContent = placeholder
}
else {
link.textContent = 'Items: 0'
}
}
else {
var itemCount = 0
if (!this.isKeyValueMode()) {
if (value.length === undefined) {
throw new Error('Object list value should be an array. Property: ' + this.propertyDefinition.property)
}
itemCount = value.length
}
else {
if (typeof value !== 'object') {
throw new Error('Object list value should be an object. Property: ' + this.propertyDefinition.property)
}
itemCount = this.getValueKeys(value).length
}
$.oc.foundation.element.removeClass(link, 'cell-placeholder')
link.textContent = 'Items: ' + itemCount
}
}
ObjectListEditor.prototype.getPopupContent = function() {View on GitHub (pinned to b608633a7e)
Solutions
- Enter a full URL: `https://example.com/about`, or a root-relative path `/about`, or an anchor `#section`.
- For email/phone links use the recognized schemes: `mailto:me@example.com`, `tel:+15551234`.
- If the popup inserts programmatically, set `PageLookupItem.url` to a value starting with '/', '#', or http(s)://.
Example fix
// before
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'url', url: 'example.com/about' } }
});
// after
oc.request(el, 'pagelookup::onInsertReference', {
data: { PageLookupItem: { type: 'url', url: 'https://example.com/about' } }
}); Defensive patterns
Strategy: validation
Validate before calling
// Mirror of PageLookupItem::isValidUrl (modules/cms/models/PageLookupItem.php:604)
function isValidLinkUrl(path) {
return /^(#|\/|https?:\/\/|(mailto|tel|sms):)/.test(path);
} Try / catch
try {
$widget->onInsertReference();
} catch (ValidationException $e) {
if (isset($e->getErrors()['reference'])) {
// URL rejected — prompt for scheme or leading slash
}
} Prevention
- Normalize URL input client-side: prefix 'https://' when the value has no scheme and does not start with / or #.
- Accept only '/', '#', http(s)://, mailto:, tel:, sms: prefixed values.
- Remember the error is reported on the reference field, not a url field.
When it happens
Trigger: Submitting type 'url' with `PageLookupItem[url]` absent, empty, or scheme-less like 'example.com/about' (no leading '/', no http://). Typing 'mailto:' alone without an address also fails the regex and the filter.
Common situations: Users typing bare domain names without a scheme; forgetting that relative URLs must start with '/'; programmatic inserts that pass only type and reference for URL links.
Related errors
- The titleProperty property should be specified in the object
- The itemProperties property should be specified in the objec
- Object list key property ${this.propertyDefinition.keyProper
- A row is not found for the updated data
- Error parsing the ${name} attribute value. ${e}
AI-assisted analysis of octobercms/october@b608633a7e (2026-08-21).
Data as JSON: /api/errors/14cf92e5650bf788.
Report an issue: GitHub.