hallo.
wie kann ich in metamodels einen ondelete callback erstellen?
mfg
Druckbare Version
hallo.
wie kann ich in metamodels einen ondelete callback erstellen?
mfg
was ist denn das ?
Den bringt dir nicht MetaModels mit, sondern der DC_General. Suche mal danach im Code vom MetaModels Core, in allen Attributen und halt im DC.
Irgendwo müsste einer getriggert werden.
Ja das bräuchte ich auch (lösche alle Bilder, die dem MM-item zugeordnet sind), sehr wohl finde ich das im DCG Quellcode ... verstehen - muss ich gestehen - habe ich das jetzt nicht so wirklich. Ein Beispiel wäre super ... aber gefunden habe ich auch keins?!
Querverweis: https://community.contao.org/de/show...ght=dc-general
... noch bin ich aber nicht ganz schlau daraus.
Ich habe einfach mal probiert - gleich vorneweg: Klappt nicht... es passier einfach nix, wenn ich einen Eintrag in dem MM (dev-tng) anlege.
https://github.com/contao-community-...ModelEvent.php
https://github.com/contao-community-...ModelEvent.php
und
http://contao-community-alliance.git.../commands.html
PHP-Code:
// modules/meinding/config.php
$GLOBALS['TL_EVENTS']['dc-general.model.pre-create[mm_gallery]'][] = function ($event) {
dump($event);
};
So sollte es gehen:
PHP-Code:
$GLOBALS['TL_EVENTS']['dc-general.model.pre-create'][] = function ($event) {
//ausgabe event
dump($event);
//ausgabe model
dump($event->getModel());
//ausgabe tablename vom model
dump($event->getModel()->getProperty('tableName'));
};
Ah ... okay ... danke. Ich hatte aber auch ein Verständnisproblem. pre-create wird ausgelöst, wenn ich bei einem neuen Eintrag das Formular speichere. Dachte zuerst, dass das Event eintritt, wenn man "Neuer Datensatz" auslöst ...
Also, um die Frage nach einen ondelete callback bei MetaModel zu beantworten (bin gerade am ausprobieren):
was bei mir auch geht, um nur ein MM zu "callback"-enPHP-Code:
// modules/meinding/config.php
// Events: dc-general.model.pre-delete OR dc-general.model.post-delete
$GLOBALS['TL_EVENTS']['dc-general.model.pre-delete'][] = function ($event) {
//ausgabe event
dump($event);
//ausgabe model
dump($event->getModel());
//ausgabe tablename vom model
dump($event->getModel()->getProperty('tableName'));
};
Jetzt schaue ich mir mal die Innereien an, was ich da alles machen kann.PHP-Code:
$GLOBALS['TL_EVENTS']['dc-general.model.pre-delete[mm_tabelle]'][] = ...
Was wäre denn das Event für nen onload_callback?
Kannst du genauer beschreiben, was du damit meinst? Ein Event, dass immer getriggert wird, wenn ein Metamodel geladen wird?
Da gibt es z.B.
CreateMetaModelEvent - This event is triggered for every metamodel when a factory wants to create an instance.
An das Model kommst du dann per
Das löst aber vermutlich auch im BE aus, kann das gerade nicht testen.PHP-Code:
$event->getMetaModel()
Was möchtest du denn genau lösen damit? Bist du dir sicher, dass du das Event brauchst?
/edit: Bitte mach für sowas in Zukunft einen eigenen Thread auf. Du kannst ja den alten verlinken. Aber dann weiß man auf den ersten Blick, worum es geht.
PHP-Code:
#config.php
$GLOBALS['TL_EVENTS']['dc-general.model.post-duplicate'][] = array('Klasse', 'doOnDuplicate');
PHP-Code:
public function doOnDuplicate( \ContaoCommunityAlliance\DcGeneral\Event\PostDuplicateModelEvent $objEvent )
{
if ( $objEvent->getModel()->getProviderName() == "mm_table" )
{
$objEvent->getModel()->setProperty("fieldname", "someValue");
return $objEvent;
}
}
sofern das für Contao 4 sein sollte, dann besser als Service in einer service.yml registrieren und von dort die Klasse aufrufen...