Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Modul Daten im frontend

  1. #1
    Contao-Fan Avatar von bcit6k
    Registriert seit
    01.02.2010.
    Ort
    Bürmoos
    Beiträge
    296

    Standard Modul Daten im frontend

    Hallo,

    ich habe mir folgendes gebaut:

    ein Erweiterung zum Modul Registrierung, eine Checkbox.

    Und ein Modul das ich im Frontend Aufrufe:

    Code:
    class ModuleTest extends \Fronted 
    {
        public function generate(){
            # nun möchte ich hier aber das Feld abrufen das ich im Modul angecheckt habe# Wie komm ich da ran?
        }
    }
    ich verwende extends \Frontend will aber das Feld aus Module wie komme ich da ran?

    Danke

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    warum extendest du von \Frontend? Probiers doch einfach mal mit extends \Module

    Und dann solltest du Zugriff über $this->deinCheckboxname haben.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Fan Avatar von bcit6k
    Registriert seit
    01.02.2010.
    Ort
    Bürmoos
    Beiträge
    296

    Standard

    Hallo,

    ich habe das mal probiert:

    Code:
    class ModuleTest extends \Module
    {
    
        public function generate() {
    
            $this->import('Frontend');
    
            // get the member
            $objMember = \MemberModel::findByActivation($arrData['activation']);
    
            $randFirstLastName = explode('@', $arrData['email']);
    
            // Update the account
            $objMember->firstname = $randFirstLastName[0];
            $objMember->lastname = $randFirstLastName[1];
            $objMember->disable = '';
            $objMember->activation = '';
            $objMember->username = $arrData['email'];
            $objMember->save();
    
            // login the user
            $this->import('FrontendUser', 'User');
    
            $_POST['username'] = $arrData['email'];
            $_POST['password'] = $arrData['password'];
    
            if ($this->User->login())
            {
                $this->redirect($strRedirect);
            }
            $this->reload();
        }
    
    }
    wenn ich das so mache bekomme ich diese Fehlermeldung:

    contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Contao\Module::compile) in ...

    wenn ich die Methode compile nenne und nicht generate bekomme ich diese Fehlermeldung:

    Missing argument 1 for Contao\Module::__construct(), called in...

    ich weis aber leider nicht welches Argument mir Fehlt?

    Danke

  4. #4
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    schau dir doch mal an wie es andere Module machen und tipp nicht einfach blind drauf los.
    Vorallem "$this->import("Frontend")" ??????????


    Normalerweise, so kenne ich es wird der auszuführende Code auch nicht in der generate() platziert, sondern in der Methode compile()

    In der generate() ist üblicherweise nur ein "return parent::generate()" enthalten, ggf. auch noch die be_wildcard, aber ansonsten nichts. Zumindest keine Modullogik

    Also, erstell dir noch die Methode compile(), entferne das import("Frontend") denn das brauchst du sicherlich nicht.

    Woher kommt eigentlich der Inhalt von $strRedirect? Deinem Code zufolge ist der Inhalt immer leer
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  5. #5
    Contao-Fan Avatar von bcit6k
    Registriert seit
    01.02.2010.
    Ort
    Bürmoos
    Beiträge
    296

    Standard

    Hi,

    so ich hab nujn die lösung gefeunden, das problem war folgendes:

    ich habe den HOOK createNewUser verwendet um meine Klasse und Methode aufzurufen

    Code:
    $GLOBALS['TL_HOOKS']['createNewUser'][] = array('ModulepagesofaEasyRegistration','activateUser');
    was ich nicht wusste ist das der callback das Modul an dritter Position mitgibt, also so

    Code:
     public function activateUser($userId, $arrData, $module) {
    in module sthet dann alles vom Module drinnen

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
  •