Ergebnis 1 bis 9 von 9

Thema: [z.T. gelöst] Zugriff auf $GLOBALS innerhalb eines Templates

  1. #1
    Contao-Nutzer
    Registriert seit
    31.05.2012.
    Beiträge
    31

    Standard [z.T. gelöst] Zugriff auf $GLOBALS innerhalb eines Templates

    Hallo,

    ich möchte mir form_select.html5 anpassen, bekomme aber keinen Zugriff auf $GLOBALS innerhalb des Templates bzw. Widgets ...?

    (Das Formular ist mit dem Formulargenerator erstellt. Der Wert ist in $GLOBALS nachprüfbar gesetzt, er lässt sich auch zwischen den Formularelementen abrufen (mit {{file::...}}).

    Bin für sachdienliche Hinweise sehr dankbar! :-)

    Viele Grüße

    McS
    Geändert von McS (13.03.2016 um 19:51 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.126
    Partner-ID
    10107

    Standard

    Poste ein Code Beispiel. Der Zugriff auf das $GLOBALS array innerhalb eines Templates wird eigentlich durch nichts beschränkt.

  3. #3
    Contao-Nutzer
    Registriert seit
    31.05.2012.
    Beiträge
    31

    Standard

    Ausgang und Ziel:
    - Formular mit dem Formulargenerator
    - darin u.a. ein select-Feld mit Länderauswahl
    - unter dem Formular sind alle vorhandenen Einträge aufgelistet

    - nach dem submit erscheint unter dem Formular wieder die Liste, aber entspr. gefiltert (funktioniert)
    - im Formular soll das Land selected sein, das ausgewählt wurde (bzw. später auch mehrere)

    Ansatz:
    - im form_select.html5 Template (bzw. entspr. umbenannt und eingebunden) selbst den selected-Status setzen

    Trotz langem Probieren und Recherchieren komme ich an dieser Stelle (im form_select-Template) nicht an die POST- oder auch GET-Werte ran. Deshalb wollte ich mir diese mit GLOBALS durchschleifen.

    Vor dem Formular ist dafür mit {{file::...}} folgendes eingebunden - Code incl. meiner Testversuche :-)

    PHP-Code:
      1 <?php
      2 
    // übertragene Formulardaten
      
    3 $get_submit Input::getInstance()->get('submit');
      
    4 $get_land_arr Input::getInstance()->get('land');
      
    5 $get_thema_arr Input::getInstance()->get('thema');
      
    8
      9 $GLOBALS
    ['ed_form_land'] = array();
     
    10 $GLOBALS['ed_form_land'] = $get_land_arr;
     
    11 $GLOBALS['ed_test'] = "ed_test_string";
     
    12 /*echo '<pre>';
     13 dump($GLOBALS['ed_form_land']);
     14 echo '</pre>'; */
     
    15 global $objEdTest;
     
    16 $objEdTest->teststring "testtext";
     
    17 ?>
    Ich kann mir am Ende der Seite oder auch mitten im Formular korrekt die Inhalte aus GLOBALS anzeigen lassen mit
    PHP-Code:
      1 <?php
      2 
    echo '<pre>';
      
    3 dump($GLOBALS['ed_form_land']);
      
    echo '</pre>';
      
    echo '<pre>';
      
    6 dump($GLOBALS['ed_test']);
      
    echo '</pre>';
      
    echo '<pre>';
      
    9 dump($GLOBALS['objEdTest']->teststring);
     
    10 echo '</pre>';
     
    11 ?>
    Code:
    Array
    (
        [0] => BG
        [1] => DE
    )
    
    string(14) "ed_test_string"
    
    string(8) "testtext"
    Wenn ich innerhalb des form_select-Templates bin und mir bspw. unter den option-Zeilen zum Test die Teststrings eintragen lassen will, kommt nur "<!-- -->" heraus, dump() meint entsprechend NULL.

    PHP-Code:
          <?php if ($option['type'] == 'option'): ?>
            <option value="<?= $option['value'?>"<?= $option['selected'?>><?= $option['label'?></option>
            <?php echo '<!-- ' $GLOBALS['ed_test'] . ' -->';?>
            <?php echo '<!-- ' $GLOBALS['objEdTest']->teststring ' -->';?>
          <?php endif; ?>
    Da GLOBALS überall verfügbar sein soll, muss ich wohl einen (dämlichen) Fehler machen ...

    Viele Grüße

    McS

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.126
    Partner-ID
    10107

    Standard

    Das geht deshalb nicht, weil der Insert Tag nach dem Formular ausgeführt wird. Insert Tags werden erst zu bestimmten Zeitpunkten ersetzt. Du solltest lieber mit Hooks arbeiten.

  5. #5
    Contao-Nutzer
    Registriert seit
    31.05.2012.
    Beiträge
    31

    Standard

    Danke, wieder was gelernt.

    Schönes Wochenende!

  6. #6
    Contao-Nutzer
    Registriert seit
    31.05.2012.
    Beiträge
    31

    Standard

    Nach dem Überschlafen kam mir die Antwort mit Bezug auf InsertTags nicht mehr so einleuchtend vor, da ich ja auf Variablen zugreifen will, genauso wie das Template es ja auch vor und nach meinen Codezeilen auch macht.

    Über GLOBALS['_GET'] komme ich an die Arrays der select-Felder, so dass sich option SELECTED nun entsprechend den gesendeten Werten individuell setzen lässt. Obwohl sich $GLOBALS per dump ausgeben läßt - auf meine selbst gesetzten GLOBALS-Variablen kann ich an dieser Stelle wie gesagt aber nicht zugreifen.

    Gruß

    McS
    Geändert von McS (13.03.2016 um 20:12 Uhr)

  7. #7
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du schreibst oben:
    PHP-Code:
    Input::getInstance()->get('submit'); 
    In meinen Augen fehlt dort der Backslash von der Input-Klasse:
    PHP-Code:
    \Input::getInstance()->get('submit'); 
    ist aber jetzt nicht ausprobiert ...

  8. #8
    Contao-Nutzer
    Registriert seit
    31.05.2012.
    Beiträge
    31

    Standard

    Danke, scheint aber hier auch ohne "\" zu gehen, jedenfalls landen die Werte in meiner eigenen GLOBALS-Variablen und lassen sich hinter dem Formular auch wieder auslesen. (edit: eben noch probiert, auch mit "\" keine Erfolg)

    Es scheint am form_select Template zu liegen: unter dem Formular ist das news_simple Template eingebunden und da kann mit eigenen GLOBALS-Variablen agieren ...

    Gruß, McS
    Geändert von McS (13.03.2016 um 21:22 Uhr)

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.126
    Partner-ID
    10107

    Standard

    Wie gesagt, damit dein Code funktioniert, muss dein Script ja vor dem Formular ausgeführt werden. Darauf kannst du dich aber nicht verlassen.

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
  •