Hallo zusammen
Wie geht man vor, wenn man in der config eines "metamodelsattribute_multi" einen load_callback einbauen möchte?
Druckbare Version
Hallo zusammen
Wie geht man vor, wenn man in der config eines "metamodelsattribute_multi" einen load_callback einbauen möchte?
was genau möchtest Du machen?
das hier sollte auch unter MM gehen: https://github.com/menatwork/contao-...-with-callback
in meinem Vortrag zur CK23 gehe ich auf einige Manipulationsmöglichkeiten ein
Ich möchte gerne ein paar Zeilen schon vorgeben!
Im "tl_metamodel_dca.php" habe ich ein Beispiel gefunden (default), nur kriege ich es nicht hin.
Leider werde ich an CK23 nicht teilnehmenPHP-Code:
'fe_editButtons' => [
'label' => &$GLOBALS['TL_LANG']['tl_metamodel_dca']['fe_editButtons'],
'exclude' => true,
'inputType' => 'multiColumnWizard',
'default' => [
[
'name' => 'save',
'label' => 'MSC.save',
'attributes' => 'accesskey="s"'
],
[
'name' => 'saveNcreate',
'label' => 'MSC.saveNcreate',
'attributes' => 'accesskey="n"'
]
],
das beantwortet meine Frage leider nicht ausreichend :(
Defaultwerte für die Widgets kannst Du DCA-like einbauen - siehe https://github.com/contao-community-...ndle/issues/83
... oder was bedeutet "ein paar Zeilen schon vorgeben"?
Ja da hast du recht :o
Ich habe zwei metamodels, eins davon hat ein multicolumn-feld. In dieses Feld möchte ich, wenn vorhanden, aus dem anderen metamodel daten pro zeile ausgeben lassen.
Und da habe ich zuerst an ein "load_callback" gedacht.
Sorry, das ist nicht genau genug beschrieben...
Wenn Du einfach nur Sachen in der Eingabemaske anzeigen möchtest, die aus einem anderen Model kommen, dann verwende das JustTextWidgets
ggf. willst Du aber auch ein Select oder Checkboxliste als Widget anzeigen, dessen Daten aus dem anderen Model kommen...??
Das erste MetaModels "Veranstaltung" ist das Elternelement. Dort wird Titel, Beschreibung usw. eingetragen.
Dann gibt es zwei Kindelemente, Aufgaben und Schichten.
Im MetaModel "Aufgaben" werden Aufgaben eingetragen. z.B. Aufbau, Parkplatz, Abbau usw.
Im MetaModel "Schichten" werden dann die Einätze (Wann und Wo) eingetragen und hier soll in einem multicolumn-feld alle Aufgaben aufgelistet werden, damit man die Anzahl Helfer und Bemerkungen noch eingeben kann.
Anhang 26686
o.k. - jetzt verstanden :cool:
guck Dir mal den columnsCallback an - könnte damit gehen... ansonsten könnte es auch gehen, wenn Du als Defaultwert ein serialisiertes Array übergibst, so wie es in der DB stünde
Ist der columnsCallback nicht nur für das erstellen der Felder (ohne Inhalt) gedacht?
einfach mal testen...
ansonsten guck Dir mal ManipulateWidgetEvent bzw. BuildWidgetEvent an
Habe es jetzt mit einem EventListener gelöst :D
Ich vermute das man in der config.php des "metamodelsattribute_multi" keinen load_callback oder save_callback konfigurieren kann.PHP-Code:
#[AsCallback(table: 'mm_shift', target: 'fields.employment.load', priority: 100)]
public function prepareMCW(array $record, DataContainer $dc)
{
$connection = System::getContainer()->get('database_connection');
$modelName = 'mm_roles';
$arrRolesItems = $connection->fetchAllAssociative("SELECT * FROM " . $modelName . " WHERE pid = ?", [$dc->activeRecord->pid]);
foreach ($arrRolesItems as $roles)
{
$arrRoles[] = array(
"col_roles" => $roles['name'],
"col_timeStartDifferences" => $roles['timeStartDifferences'],
"col_timeEndDifferences" => $roles['timeEndDifferences']
);
}
return $arrRoles;
}
warum nicht - an der Stelle ist das ja alles "normales Contao"... statt des DB-Aufrufs hätte ich mit der MM-API gearbeitet - aber viele Wege führen nach Rom
Auf die einzelne Spalte habe ich es schon hinbekommen, aber nicht auf das ganze "metamodelsattribute_multi". Die callbacks werden einfach ignoriert! :rolleyes:
in MM werden z. B. die "Einstellungen der Weiterleitung" bei den Rendersettings dynamisch in dem MCW befüllt - bei mehrsprachigem MM für jede Sprache eine Zeile per BuildWidgetEvent
siehe https://github.com/MetaModels/core/b...ToListener.php
Wenn Deine Spalte "Aufgabe" nur als Text ausgegeben werden soll, könntest Du dort https://github.com/discordier/justtextwidgets einsetzen.
Habe mit der Erweiterung "justtextwidgets" getestet und das wäre genau richtig.
Nur wenn man ein Feld im "metamodelsattribute_multi" über "justtext" verstecken möchte, funktioniert das im Backend wunderbar, leider aber nicht im Frontend.
Im Backend ist das input wunderbar auf hidden und im Frontend wird das "input hidden" nicht ausgegeben.