Ergebnis 1 bis 10 von 10

Thema: [GELÖST] BE-Modul ohne Datentabelle - nur Ausgabe

  1. #1
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard [GELÖST] BE-Modul ohne Datentabelle - nur Ausgabe

    Hallo Leute,

    ich wage mich gerade das erste Mal über die Extension-Entwicklung (ist wohl etwas übertrieben ).

    Bei Klick auf den Link "Email zeigen" sollen alles Email einer Tabelle ausgegeben werden - fertig.

    Bisher hab ich unter system/modules den Ordner anzahlEmails angelegt, darunter die ordner config, html, languages und templates.
    Im Root-Ordner liegt auch die Datei anzahlEmails.php mit der Klasse anzahlEmails extends BackendModule. In dieser Klasse gibt es
    es eine generate-Function, die einen Testwert retourniert, sowie protected $strTemplate = 'be_anzahlEmails';

    Die Datei be_anzahlEmails.html5 liegt im templates-Ordner.

    Im BE wird schon mal das Icon und der Link angezeigt - danach kommt allerdings nix mehr.

    Ich wäre so vorgegangen, dass ich der generate-Funktion die Datensätze auslesen lasse und im der be_anzahlEmails.html5 ausgeben lasse.
    Bin ich komplett auf dem Holzweg?

    Bitte um kurzen oder auch längeren Denkanstoß - vielen Dank.

    lg aus Ö
    steff

    PS: Contao 2.11.6
    Geändert von steff74 (29.11.2012 um 16:01 Uhr)

  2. #2
    Contao-Fan Avatar von webster
    Registriert seit
    14.09.2010.
    Ort
    Kiel
    Beiträge
    460

    Standard

    Hallo steff74,

    was steht denn in der config.php drin. Da musst du im Callback definieren, welche Klasse für das Modul benutzt werden soll.

    PHP-Code:
    $GLOBALS['BE_MOD']['content']['gm_coordinates'] = array
    (
        
    'callback'  => 'anzahlEmails',
        
    //...more definitions
    ); 
    Außerdem war ich bisher immer der Meinung, dass die eigentliche Verarbeitung der Daten in der compile() Methode gemacht wird. Man möge mich korrigieren, wenn ich da falsch liege...
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  3. #3
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Hi webster,

    ich hab die Klasse in der callback-Angabe definiert.
    compile() ist für das Frontend zuständig, generate() für das Backend. Da ich nur
    eine Backend-Ausgabe brauche, hab ich auch nur eine generate-Funktion erstellt.

  4. #4
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Alternativ hab ich vor langer Zeit genau fuer diesen Einsatz meinen DC_Memory gebaut.
    LAesst sich nutzen wie ein normaler DC_Table mit allen DCA Funktionalitaeten, nur du selbst betsimmst halt, was du anzeigen willst, und woher und wohin die Daten gehen.

    Schau Dir mal meine Erweiterung translationhelper an. Dort nutze ich das auch.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  5. #5
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Vielen Dank für die Info, lindesbs, ich werde mir die Erweiterung ansehen.

  6. #6
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Fehler gefunden -> ich hatte bei der Klasse anstatt ... extends Backend blöderweise ... extends BackendModule geschrieben.
    Nun klappt mal das Grobe.

  7. #7
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Und wenn ich schon mal dabei bin, DAU-Fragen zu stellen, setz ich gleich noch einen drauf.

    PHP-Code:
    class anzahlEmails extends Backend
    {
        
        protected 
    $strTemplate 'be_anzahlEmails';
        
        public function 
    __construct () {
           
    $this->import('Database');
            
        }    
        
        public function 
    generate() {
            
            
    $result $this->Database->prepare("SELECT email FROM tl_member")->execute();
            
    $arrEmail = array();
            
            while (
    $result->next()) {
                
    $arrEmail[] = $result->email;        
            }        
            
    $this->Template->emails $arrEmail;
        }
        

    Ich dachte, dass so die Daten an das Template übergeben werden, doch leider irre ich. Gebe ich in der generate-Funktion die Daten per return zurück, werden sie schön ausgegeben.
    Wie bekomm ich die Daten ins Template?

    Danke für eure Geduld

  8. #8
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    griefst Du im Template auch per

    PHP-Code:
    $this->emails 
    wieder auf die Daten zu ?

    Ansonsten nutze mal im Template

    PHP-Code:
    echo $this->showTemplateVars(); 
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  9. #9
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Ja, ich greife per $this->emails drauf zu und auch showTemplateVars() hab ich natürlich versucht.

    Anbei zwei Screenshots - einmal, wenn ich in der generate-Funktion kein return (wie im Code oben) angebe
    und einmal mit dem return.

    Das Template hat eine html5-Dateiendung, wie andere funktionierende Templates auch.
    Angehängte Grafiken Angehängte Grafiken

  10. #10
    Contao-Nutzer Avatar von steff74
    Registriert seit
    01.09.2009.
    Ort
    weinviertel, österreich
    Beiträge
    86

    Standard

    Problem gelöst - extends BackendModule war doch richtig.
    So funktionierts nun wie gewünscht:
    PHP-Code:
    class anzahlEmails extends BackendModule
    {
        
        protected 
    $strTemplate 'be_anzahlEmails';
        
        public function 
    __construct () {
           
    $this->import('Database');
        }    
        
        public function 
    generate() {
            
    parent::generate(); 
            
    $result $this->Database->prepare("SELECT email FROM tl_member")->execute();
            
    $arrEmail = array();
            while (
    $result->next()) {
                
    $arrEmail[] = $result->emaill;
            }
            
            
    $this->Template->emails $arrEmail;
            return 
    $this->Template->parse();
        }

        public function 
    compile() {}

    Danke fürs Mitlesen und euren Input, besonders lindesbs

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
  •