Contao-Camp 2024
Ergebnis 1 bis 2 von 2

Thema: PrePersistModelEvent ID eingeloggter Nutzer in Datenbank bei Datensatzerstellung

  1. #1
    Contao-Nutzer Avatar von btosh
    Registriert seit
    11.12.2015.
    Beiträge
    58

    Standard PrePersistModelEvent ID eingeloggter Nutzer in Datenbank bei Datensatzerstellung

    Hallo zusammen,

    ich brauche mal wieder eure Hilfe.

    Installation:
    • Contao Version 4.9.35
    • MetaModels Start-Bundle Version 2.2.0
    • metamodels/contao-frontend-editing Version 2.2.1


    Mit Meta Models sind Daten als Kind-Tabelle der tl_member angelegt. Der eingeloggte Nutzer soll nun Datensätze dieser Meta Models im FE eintragen können. Im Frontend gibt es diese Eingabemaske schon. Jetzt müsste nur noch die ID des eingeloggten Nutzers mit in die Datenbank gespeichert werden, so dass die Daten dem entsprechenden Nutzer zugeordnet werden.

    Ich habe einige Einträge im Forum gefunden. Leider werde ich daraus nicht schlau. Ich weiß, dass beim Abspeichern die ID mit dem PrePersistModelEvent eingetragen werden kann.

    Nachfolgend der Code des event_listeners.php

    Code:
    <?php
    
    use ContaoCommunityAlliance\DcGeneral\Event\PrePersistModelEvent;
    
    return [
       PrePersistModelEvent::NAME => [
           function (PrePersistModelEvent $event) {                   
               if (FE_USER_LOGGED_IN) {
                     $model->getItem()->set('pid', \Contao\FrontendUser::getInstance()->id);
               }
           },
       ],
    ];
    Diesen und andere Beiträge habe ich gelesen, bekomme ich aber nicht adaptiert:
    https://community.contao.org/de/show...sistModelEvent

    Wahrscheinlich ist es zu einfach gedacht. Für eure Unterstützung wäre ich sehr dankbar.

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    Uff...

    mehrere Sachen:

    * wie im Handbuch geschrieben, sind die bundle_* nur für den "Schnupperkurs" - Live sollten nur die notwendigen Repos eingebaut werden - siehe https://metamodels.readthedocs.io/de...eparate-module

    * den alten Code event_listeners.php solltest Du nicht (mehr) verwenden, sondern wie hier einen EventListener unter src/ erstellen

    * statt dem PreEditModelEvent verwende PrePersistModelEvent

    * arbeite mit einer richtigen IDE - dann werden Dir die Getter und Setter auch angezeigt/vorgeschlagen

    * hier findest Du weitere EventListeners des DCG - mit dem PreEditModelEvent könntest Du vor den Aufruf der Eingabemaske prüfen, ob eine entsprechende Berechtigung vorliegt

    * weitere Services wie z.B. der DB-Zugriff sollten per Dependency-Injection (DI) eingebunden werden, d.h. per __constructor und Arguments in der service.yml - über die Annotations geht das leider nicht... Autowire in der service.yml sollte gehen, hab ich bisher aber nicht getestet

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •