Wie konfiguriert man Array-Objekte in einem Plugin? Ich habe es mit json_schema versucht, aber Objektschreibweisen können keine Selektoren wie category verwenden; es ist nur die Texteingabe möglich. type: objects funktioniert hingegen überhaupt nicht in den Plugin-Konfigurationen.
Die Konfiguration für json_schema:
quectel_online_customer_category_customers:
default: "[]"
client: true
json_schema: QuectelOnlineCustomer::SiteSettings::CategoryCustomersJsonSchema
plugins/quectel-online-customer/lib/quectel_online_customer/site_settings/category_customers_json_schema.rb:
# frozen_string_literal: true
module QuectelOnlineCustomer
module SiteSettings
class CategoryCustomersJsonSchema
def self.schema
@schema ||= begin
{
type: "array",
uniqueItems: true,
default: [],
items: {
type: "object",
title: „Konfiguration der Kategorie-Kunden",
additionalProperties: false, # Nicht definierte Felder dürfen nicht übermittelt werden
required: %w[category customers], # Beide Felder sind erforderlich
properties: {
category: {
type: "category",
description: „Verknüpfte Forumskategorie",
label: „Kategorie"
},
customers: {
type: "usernames", # Mehrfachauswahl von Benutzern als Ersatz für den einzelnen Benutzernamen „username"
description: „Kundenkonten, die dieser Kategorie zugewiesen sind; Mehrfachauswahl unterstützt",
label: „Kundenbenutzer"
}
}
}
}
end
end
end
end
end
Ja, das ist tatsächlich möglich. Allerdings wird type:category auch innerhalb von type:objects nicht unterstützt. Mein Anliegen ist es, Kategorien und Gruppen auszuwählen.
Ah, ich verstehe. Die Objekteinstellungen werden also direkt in deine settings.yml eingefügt. Du solltest sie wie folgt formatieren:
oauth2_category_example:
type: objects
default: []
area: "oauth2"
schema:
name: category_rule
identifier: name
properties:
name:
type: string
required: true
label: Regelname
description: Ein Label für diese Regel
category:
type: categories
required: true
label: Kategorie
description: Die Kategorie, auf die diese Regel anwendbar ist
validations:
max: 1
groups:
type: groups
label: Gruppen
description: Mit dieser Kategorie verknüpfte Gruppen
Dadurch wird ein Kategorie-Auswahlfeld wie dieses erzeugt
Wird type:category als einzelne Auswahl nicht unterstützt?
Entsprechend dieser Konfiguration
quectel_online_customer_category_customer_group:
type: objects
default: []
schema:
name: „Kategorie-Kundenservice-Gruppierung"
identifier: name
properties:
name:
type: string
required: true
label: Name
description: Name
category:
type: categories
required: true
label: „Kategorie"
description: „Kategoriename. Bitte auf der Seite [Alle Kategorien](/categories) einsehen"
group_name:
type: groups
required: true
label: „Name der Kundenservice-Gruppe"
description: „Name der Kundenservice-Gruppe, nur lateinische Zeichen. Bitte auf der Seite [Kundenservice-Gruppen](/admin/groups) einsehen"
Ich begegne folgendem Fehler:
Fehler aufgetreten:
- Beim Rendern:
{{outlet}} für -top-level
-top-level
{{outlet}} für application
application
DiscourseRoot
{{outlet}} für admin
admin
{{outlet}} für admin.schema
schema
SchemaSettingNewEditor
SchemaSettingField
SchemaSettingTypeCategories
CategorySelector
section-link.gjs:149
Beim Versuch, erneut zu rendern, ist ein nicht wiederherstellbarer Fehler in der Ember-Anwendung während des Render-Vorgangs aufgetreten. Bitte laden Sie die Anwendung neu, nachdem Sie die Ursache des Fehlers behoben haben.
categories.gjs:13
Uncaught (in promise) TypeError: this.args.value?.map ist keine Funktion
at SchemaSettingTypeCategories.<anonymous> (categories.gjs:13:9)
Hängt das mit meiner Version zusammen?
Discourse v2026.1.4 — Commits · discourse/discourse · GitHub — Ember v6.6.0
Haben Sie eine veraltete Konfiguration in den Einstellungen gespeichert? Könnten Sie versuchen, sie mit der Schaltfläche „Zurücksetzen“ auf den Standardwert zurückzusetzen, falls diese erscheint?
Ich sehe die Zurücksetzen-Schaltfläche nicht. Die Seite sieht genau so aus wie auf dem Screenshot; unter den Kategorien wird nichts angezeigt.
Hmmm, ich bin mir nicht sicher, was da schiefgehen könnte… Ich habe die Kategorien-Option mit dem Objekttyp getestet, also weiß ich, dass sie funktioniert, und es sollte kein Problem mit deiner Version sein. Ich frage mich trotzdem, ob irgendwo etwas in einem fehlerhaften Zustand feststeckt. Könntest du eine separate Einstellung mit einem neuen Namen nur zum Testen versuchen? Ist das auf GitHub oder woanders verfügbar, damit ich es ausprobieren kann?
type:categories ist in Ordnung, type:category jedoch nicht.
Die folgende Konfiguration funktioniert jedoch auch gut, wenn nur eine Auswahl getroffen wird, sodass type:category nicht erforderlich ist.
category:
type: categories
required: true
label: „Kategorie"
description: „Kategoriename"
validations:
max: 1