Ergebnis 1 bis 6 von 6

Thema: Template: Zugriff auf Variable nicht möglich

  1. #1
    Contao-Nutzer
    Registriert seit
    28.02.2013.
    Beiträge
    15

    Frage Template: Zugriff auf Variable nicht möglich

    Hallo liebe Community,

    einige Male hätte ich schon fast einen Beitrag im Forum schreiben müssen, aber eigentlich immer bin ich nach einigem Suchen dann doch auf die richtige Lösung gekommen.
    Jetzt stecke ich aber fest.

    Ein eigenes Modul zeigt in einem eigenen Template u.a. eine Karte mit Markern an. Das klappt so weit auch wunderbar und ist nicht mein Problem.

    Ich will nun zusätzlich eine Variable benennen, die im Template ausgegeben werden soll - klingt "zu" einfach...

    PHP-Code:
    protected function compile() {
     
    // Quellcode für die Aufbereitung der Marker für die Karte (u.a. Ajax-Request)

    //Dann am Ende:

                
    $objSQL $this->Database->prepare("SELECT * FROM `tl_datentabelle` ORDER BY bezeichnung")->execute();
            while(
    $objSQL->next()) {
            
    $opt_array[$objSQL->id] = $objSQL->bezeichnung;
            }

                
    $objTemplate = new FrontendTemplate("mod_meinekarte");
            
    $objTemplate->hl 'h3';
            
    $objTemplate->headline $this->headline;
            
    $objTemplate->opt_array $opt_array;
            
    $objTemplate->showTemplateVars();
            
    $objTemplate->parse();    


    Im Template wird mit folgender Zeile nichts ausgegeben:
    PHP-Code:
    <?php echo $this->opt_array?>

    Das "Bizarre":
    $objTemplate->showTemplateVars(); zeigt den Inhalt des Arrays oben am Bildschirmrand an:
    Array
    (
    [hl] => h3
    [headline] => Meine Karte
    [opt_array] => Array
    (
    [3] => Dummytext
    )

    )
    Allerdings fehlt die Variable beim Aufruf von Folgendem im Template:
    PHP-Code:
    <?php echo '<pre>' $this->showTemplateVars() . '</pre>'?>
    Habt ihr eine Idee? Wo ist mein Fehler?

    Vielen Dank für eure kreativen Vorschläge!
    Geändert von ketanest (26.03.2013 um 06:37 Uhr)

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

    Standard

    Hallo ketanest,

    Wenn Du innerhalb der Klasse dem Template die Variable opt_schwerpunkte zuweist, so musst Du diese im Template auch so ansprechen (und nicht opt_array):

    $objTemplate->opt_schwerpunkte = $opt_array;


    Im Template dann per

    Code:
    $this->opt_schwerpunkte
    auf den Wert zugreifen.
    Was ist das? - Blaues Licht - Und was macht es? - Es leuchtet blau...

  3. #3
    Contao-Nutzer
    Registriert seit
    28.02.2013.
    Beiträge
    15

    Standard

    Guten Morgen Webster,

    da hast du recht - aber das ist leider nur ein Übertragungsfehler von mir gewesen (hier im Forum).

    Die Variable wird nicht übergeben. Die Variablenausgabe innerhalb des Templates, es gibt keine Variable mit "o" beginnend.
    Array
    (
    [id] => 32
    [pid] => 1
    [tstamp] => 1364204536
    [name] => Meine Karte
    [headline] => Meine Karte
    [type] => fem_meinekarte
    (....)
    [newsletters] =>
    [nl_channels] =>
    [nl_hideChannels] =>
    [nl_subscribe] =>
    [nl_unsubscribe] =>
    [nl_template] => nl_simple
    [disableCaptcha] =>
    [reg_groups] =>
    (...)
    Danke für deine Hilfe!

  4. #4
    Contao-Fan Avatar von Arno
    Registriert seit
    11.12.2009.
    Ort
    Potsdam-Babelsberg
    Beiträge
    290

    Standard

    Versuch es doch mal so:
    Code:
    $this->Template->opt_schwerpunkte = $objTemplate->parse();
    Das sollte funktionieren.

  5. #5
    Contao-Nutzer
    Registriert seit
    28.02.2013.
    Beiträge
    15

    Standard

    Arno, das hat natürlich funktioniert. Ich finde es allerdings {trotzdem} nicht logisch, dass die Initiierung eines neuen Template-Objects nicht funktioniert - dieses Procedere wird bei der Ausgabe doch ansonsten regelhaft angewendet? Aber so lange es jetzt klappt.... ;-)

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.515
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
            $this->Template = new FrontendTemplate("mod_meinekarte");
            
    $this->Template->hl 'h3';
            
    $this->Template->headline $this->headline;
            
    $this->Template->opt_array $opt_array;
    //      $objTemplate->showTemplateVars();
    //      $objTemplate->parse(); 
    Auf dieser Art überschreibst du das Default Template, dass du in deiner Klasse normalerweise am Anfang so definierst:
    PHP-Code:
    protected $strTemplate 'mod_meindefault'
    und als $this->Template zur Verfügung steht.

    Wenn du mit einen Teil Template arbeiten willst was du als Ergebnis wiederum dem normalem Template übergibst ginge das so:


    PHP-Code:
    $this->TemplatePartial = new FrontendTemplate('mod_meins_details');
    $this->TemplatePartial->daten 'Hallo';
    $this->Template->partial $this->TemplatePartial->parse(); 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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
  •