Ergebnis 1 bis 23 von 23

Thema: Wie lese ich ein Array im Template aus damit ich es dort ausgeben kann?

  1. #1
    Contao-Nutzer
    Registriert seit
    02.05.2013.
    Beiträge
    62

    Standard Wie lese ich ein Array im Template aus damit ich es dort ausgeben kann?

    Hallo! Ich benötige Hilfe bei folgendem Problem:

    Habe 2 Megamodels:
    1) Produkte (Bezeichnung, Fotos, Texte, Daten etc.)
    2) Ansprechpartner (Name, Foto, Telefon, Funktion etc.)

    Im Backend kann ich per Checkbox bei den Produkten zu jedem Produkt einen oder mehrere Ansprechpartner auswählen.
    Für die Ausgabe der Produkdetailseiten habe ich das MM Ausgabetemplate (unrendered...) angepasst damit ich es entsprechend meinen Vorstellungen formatieren kann.

    Wenn ich alle Variablen durch das Template ausgeben lasse, sehe ich das in einem Array auch die Ansprechpartner enthalten sind, allerdings weiß ich nicht wie ich das Array Ansprechpartner das ja aus dem 2. Metamodel kommt im Template gezielt auslesen und ausgeben kann. Habe schon etwas mit Array explode rumexperimentiert aber irgendwie klappt das nicht. Kann mir da jemand einen Tipp geben oder hat vielleicht so etwas ähnliches mal gemacht?

    Im Prinzip müsste es so funktionieren:

    - Prüfe ob Ansprechpartner ausgewählt wurden (also ob was im Array steht)
    - Wenn nein dann nichts ausgeben
    - Wenn ja durchlaufe eine Schleife mit der Anzahl der ausgewählten Ansprechpartner und gebe jeweils alle Felder aus (Name, Tel, Funktion)

    Danke!

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

    Standard

    Ich hoffe, über "die Phase": http://metamodels.readthedocs.io/de/...templates.html bist Du schon hinweg...

    ... wenn Du uns an Deinem Array teilhaben lässt, kann man sicher auch einen Tipp geben

    ansonsten: explode, implode, foreach

  3. #3
    Contao-Nutzer
    Registriert seit
    02.05.2013.
    Beiträge
    62

    Standard So sieht die Ausgabe aus

    Hallo!

    Ja, ich habe mir alle Daten einmal über das Template ausgeben lassen. Die Daten die ich benötige stehen so in der Ausgabe:

    PHP-Code:
      [ansprechpartner] => Array
                                            (
                                                [
    5] => Array
                                                    (
                                                        [
    __TAGS_RAW__] => Array
                                                            (
                                                                [
    id] => 5
                                                                
    [pid] => 0
                                                                
    [sorting] => 0
                                                                
    [tstamp] => 1465199979
                                                                
    [veroeffentlicht] => 1
                                                                
    [name] => Max Muster
                                                                
    [funktion] => Vertrieb
                                                                
    [telefon] => 04444-5555-66
                                                                
    [mail] => max@musterfirma.de
                                                                
    [infotext_ansprechp] => 
                                                                [
    foto_ansprechpartner] => Array
                                                                    (
                                                                        [
    bin] => Array
                                                                            (
                                                                                [
    0] => �G��+���RT�?�s
                                                                            
    )

                                                                        [
    value] => Array
                                                                            (
                                                                                [
    0] => e647f58c-2bb4-11e6-ab03-52548a3f8573
                                                                            
    )

                                                                        [
    path] => Array
                                                                            (
                                                                                [
    0] => files/bilder-content/teamfotos/mustermann.jpg
                                                                            
    )

                                                                    )


                                                                [
    alias] => max-muster
                                                            
    )

                                                        [
    infotext_ansprechp] => 
                                                        [
    mail] =>  max@musterfirma.de
                                                        
    [telefon] => 04444-5555-66
                                                        
    [funktion] => Vertrieb
                                                        
    [name] => Max Muster
                                                        
    [veroeffentlicht] => 1
                                                        
    [foto_ansprechpartner] => files/bilder-content/teamfotos/mustermann.jpg
                                                        
    [alias] => max-muster
                                                    
    )

                                                [
    1] => Array
                                                    (
                                                        [
    __TAGS_RAW__] => Array
                                                            (
                                                                [
    id] => 1
                                                                
    [pid] => 0
                                                                
    [sorting] => 0
                                                                
    [tstamp] => 1465199771
                                                                
    [veroeffentlicht] => 1
                                                                
    [name] => Peter Meier
                                                                
    [funktion] => Beratung
                                                                
    [telefon] => 04444-5555-67
                                                                
    [mail] => meier@musterfirma.de
                                                                
    [infotext_ansprechp] => 
                                                                [
    foto_ansprechpartner] => Array
                                                                    (
                                                                        [
    bin] => Array
                                                                            (
                                                                                [
    0] => ��/�+���RT�?�s
                                                                            
    )

                                                                        [
    value] => Array
                                                                            (
                                                                                [
    0] => e6c12fdd-2bb4-11e6-ab03-52548a3f8573
                                                                            
    )

                                                                        [
    path] => Array
                                                                            (
                                                                                [
    0] => files/bilder-content/teamfotos/meier.jpg
                                                                            
    )

                                                                    )

                                                                [
    alias] => peter-meier
                                                            
    )

                                                        [
    infotext_ansprechp] => 
                                                        [
    mail] => meier@musterfirma.de
                                                        
    [telefon] => 04444-5555-67
                                                        
    [funktion] => Beratung
                                                        
    [name] => Peter Meier
                                                        
    [veroeffentlicht] => 1
                                                        
    [foto_ansprechpartner] => files/bilder-content/teamfotos/meier.jpg
                                                        
    [alias] => peter-meier
                                                    
    )

                                            ) 

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

    Standard

    ... Du musst Dich mit verschachtelten foreach-Schleifen in den Array-Ebenen "nach unten" hangeln... hat mit MM aber nix zu tun...

  5. #5
    Contao-Nutzer
    Registriert seit
    02.05.2013.
    Beiträge
    62

    Standard Danke

    Ok, Danke ich werde mal mein Glück versuchen. Grundsätzlich hat es für mich schon was mit Metamodels zu tun da ich mir ja eine Metamodels Ausgabe basteln möchte. Ich denke das "Problem" wird ja auch nicht selten auftreten wenn man 2 Metamodels miteinander nutzt. Die Auslese Schleife an sich ist natürlich nicht MM spezifisch, das stimmt wohl ...

    Danke!

    ;-)

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

    Standard

    foreach mit verschachtelt oder nested bringt Dich weiter... z.B. http://stackoverflow.com/questions/1...nested-foreach

    ... das sind aber "PHP-Grundlagen" und sollten mit Google gefunden werden können

  7. #7
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Angenommen das Array ist $ansprechpartner, dann müsste das so gehen
    PHP-Code:
    <?php
    if($ansprechpartner)
    {
      foreach(
    $ansprechpartner as $partner)
      {
        echo 
    $partner['__TAGS_RAW__']['tstamp'].'<br>';
        echo 
    $partner['name'].'<br>';
      }
    }
    Edit: explode http://de1.php.net/manual/de/function.explode.php brauchst du nur dann, wenn du aus einem String ein Array erstellen möchtest, was hier ja nicht der Fall ist.
    Geändert von Andreas (07.06.2016 um 15:21 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  8. #8

  9. #9
    Contao-Nutzer
    Registriert seit
    02.05.2013.
    Beiträge
    62

    Standard noch nicht weiter gekommen ...

    Erst einmal vielen Dank für die Hilfe, leider komme ich mit dem Code von Andreas noch nicht weiter aber zumindest bekomme ich hiermit
    PHP-Code:
    <?php
      
    echo $arrItem['text']['ansprechpartner'];
    ?>
    diese Ausgabe im Frontend:

    Max Muster,Peter Meier

    vielleicht kann der ein oder andere darauf aufbauen und mir noch einen Tipp geben?

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

    Standard

    das sieht nach deinem Array(Auszug) von oben nicht "kompatibel" aus -

    wie immer "Halbe Infos - Halbe Antworten" ;-)

    Poste mal das Array von einem Item komplett - dann gibt es ggf. auch die zweite Hälfte

  11. #11
    Contao-Nutzer
    Registriert seit
    02.05.2013.
    Beiträge
    62

    Standard

    Das sind schon die ganzen Infos

    - mittels print r habe ich die Array Infos wie bereits gepostet
    - die php Anweisung im letzten Post ist so im Template

    Das Ergebnis ist auch wie beschrieben ... mehr Infos habe ich leider nicht.

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

    Standard

    Bei mir sehen die Arrays - wenn wie im Handbuch beschrieben ausgegeben - etwa so aus

    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    raw] => Array
                    (
                        [
    id] => 93
                        
    [pid] => 0
                        
    [sorting] => 0
                        
    [tstamp] => 1465540990
                        
    [name] => Avery
                        
    [vorname] => Amir
                        
    [email] => Amir.Avery@mmtest.com
                        
    [abteilung] => Array
                            (
                                [
    __SELECT_RAW__] => Array
                                    (
                                        [
    id] => 4
                                        
    [pid] => 0
                                        
    [sorting] => 384
                                        
    [tstamp] => 1465540776
                                        
    [name] => Marketing
                                        
    [alias] => marketing
                                    
    )

                                [
    name] => Marketing
                                
    [alias] => marketing
                            
    )

                    )

                [
    text] => Array
                    (
                        [
    name] => Avery
                        
    [vorname] => Amir
                        
    [email] => Amir.Avery@mmtest.com
                        
    [abteilung] => Marketing
                    
    )

                [
    attributes] => Array
                    (
                        [
    name] => Name
                        
    [vorname] => Vorname
                        
    [email] => E-Mail
                        
    [abteilung] => Abteilung
                    
    )

                [
    html5] => Array
                    (
                        [
    name] => <span class="text">Avery</span>
                        [
    vorname] => <span class="text">Amir</span>
                        [
    email] => <span class="text">Amir.Avery@mmtest.com</span>
                        [
    abteilung] => Marketing
                    
    )

                [class] => 
    first even
                
    [jumpTo] => Array
                    (
                    )

            )

        [
    1] => Array
            (
    .... 
    da das bei Dir (ganz) anders aussieht, kann zumindest ich Dir nicht weiter helfen...

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ohne die wesentlichen Parts aus dem Template, den genauen print_r() Befehl und die Ausgabe von print_r() kann ich da jetzt auch nicht weiterhelfen. Code bitte sauber und nicht so weit einrücken.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  14. #14
    Contao-Nutzer
    Registriert seit
    22.08.2016.
    Beiträge
    9

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Bei mir sehen die Arrays - wenn wie im Handbuch beschrieben ausgegeben - etwa so aus

    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    raw] => Array
                    (
                        [
    id] => 93
                        
    [pid] => 0
                        
    [sorting] => 0
                        
    [tstamp] => 1465540990
                        
    [name] => Avery
                        
    [vorname] => Amir
                        
    [email] => Amir.Avery@mmtest.com
                        
    [abteilung] => Array
                            (
                                [
    __SELECT_RAW__] => Array
                                    (
                                        [
    id] => 4
                                        
    [pid] => 0
                                        
    [sorting] => 384
                                        
    [tstamp] => 1465540776
                                        
    [name] => Marketing
                                        
    [alias] => marketing
                                    
    )

                                [
    name] => Marketing
                                
    [alias] => marketing
                            
    )

                    )

                [
    text] => Array
                    (
                        [
    name] => Avery
                        
    [vorname] => Amir
                        
    [email] => Amir.Avery@mmtest.com
                        
    [abteilung] => Marketing
                    
    )

                [
    attributes] => Array
                    (
                        [
    name] => Name
                        
    [vorname] => Vorname
                        
    [email] => E-Mail
                        
    [abteilung] => Abteilung
                    
    )

                [
    html5] => Array
                    (
                        [
    name] => <span class="text">Avery</span>
                        [
    vorname] => <span class="text">Amir</span>
                        [
    email] => <span class="text">Amir.Avery@mmtest.com</span>
                        [
    abteilung] => Marketing
                    
    )

                [class] => 
    first even
                
    [jumpTo] => Array
                    (
                    )

            )

        [
    1] => Array
            (
    .... 
    da das bei Dir (ganz) anders aussieht, kann zumindest ich Dir nicht weiter helfen...
    Wie genau würde ich denn hier an raw.name im Frontend kommen?
    Ich habe hier ebenfalls name und ein ähnliches Array, aber eine Ausgabe bekomme ich nicht mit:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    raw] => Array
                    (
                        [
    id] => 1
                        
    [pid] => 0
                        
    [sorting] => 0
                        
    [tstamp] => 1471867394
                        
    [name] => Test Ofen
                        
    [thumbnail] => Array
                            (
                                [
    bin] => Array
                                    (
                                    )

                                [
    value] => Array
                                    (
                                    )

                                [
    path] => Array
                                    (
                                    )

                            )

                        [
    description] => 
                        [
    teaser] => 
                        [
    supplier] => 
                    )

                [
    text] => Array
                    (
                        [
    name] => Test Ofen
                        
    [description] => 
                        [
    teaser] => 
                        [
    thumbnail] => 
                        [
    supplier] => 
                    )

                [
    attributes] => Array
                    (
                        [
    name] => Name
                        
    [description] => Beschreibung
                        
    [teaser] => Teaser Bild
                        
    [thumbnail] => Thumbnail
                        
    [supplier] => Hersteller
                    
    )

                [
    html5] => Array
                    (
                    )

                [class] => 
    first even
            
    )

        [
    1] => Array
            (
                [
    raw] => Array
                    (
                        [
    id] => 2
                        
    [pid] => 0
                        
    [sorting] => 0
                        
    [tstamp] => 1471870397
                        
    [name] => Noch einer
                        
    [thumbnail] => Array
                            (
                                [
    bin] => Array
                                    (
                                    )

                                [
    value] => Array
                                    (
                                    )

                                [
    path] => Array
                                    (
                                    )

                            )

                        [
    description] => 
                        [
    teaser] => 
                        [
    supplier] => 
                    )

                [
    text] => Array
                    (
                        [
    name] => Noch einer
                        
    [description] => 
                        [
    teaser] => 
                        [
    thumbnail] => 
                        [
    supplier] => 
                    )

                [
    attributes] => Array
                    (
                        [
    name] => Name
                        
    [description] => Beschreibung
                        
    [teaser] => Teaser Bild
                        
    [thumbnail] => Thumbnail
                        
    [supplier] => Hersteller
                    
    )

                [
    html5] => Array
                    (
                    )

                [class] => 
    last odd
            
    )


    Eine Ausgabe versuche ich mit:
    PHP-Code:
    <?php foreach ($this->data as $arrItem): ?>
       <?php arrItem['raw']['name']; ?>
    <?php 
    endforeach; ?>
    *EDIT* Ich Trottel .. Man sollte natürlich auch ein echo verwenden - klappt, vielen Dank
    Geändert von crizzo (22.08.2016 um 15:18 Uhr)

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

    Standard

    PHP-Code:
    <?= $arrItem['text']['name'?>
    geht auch

  16. #16
    Contao-Nutzer
    Registriert seit
    22.08.2016.
    Beiträge
    9

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    PHP-Code:
    <?= $arrItem['text']['name'?>
    geht auch
    Werde ich wohl so machen.

    Eine Frage noch: supplier ist bei mir ein Eintrag aus einem zweiten MetaModel. Wie man in dem Array sieht, ist der wert für supplier allerdings nicht gegeben.
    Im Backend wurde dieser aber ausgewählt.

    Gibt es hier noch etwas zu beachten im Frontend, bei einem array aus einem zweiten MetaModel? Oder sollte er hier eigentlich einfach den Wert ausgeben?

    Den path usw. von meinem thumbnail Array gibt er auch nicht aus, wie man oben sieht.
    Geändert von crizzo (22.08.2016 um 15:44 Uhr)

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

    Standard

    Zitat Zitat von crizzo Beitrag anzeigen
    Gibt es hier noch etwas zu beachten im Frontend, bei einem array aus einem zweiten MetaModel? Oder sollte er hier eigentlich einfach den Wert ausgeben?
    anhand des Arrays sieht es eben nicht so aus, als ob die beiden MM in Relation stünden...

  18. #18
    Contao-Nutzer
    Registriert seit
    22.08.2016.
    Beiträge
    9

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    anhand des Arrays sieht es eben nicht so aus, als ob die beiden MM in Relation stünden...
    Er gibt mir allerdings auch nichts aus aus dem thumbnail Array wie man oben sieht. Ein Bild ist aber definitiv hinterlegt. Trotzdem sind hier die werte path / value im Frontend nicht befüllt.

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

    Standard

    wie hast Du den die beiden MM "verbunden"?

    zur Info: hier hat keiner Kristallkugeln oder ist Hellseher - keine Ahnung was Du da bei Dir gemacht hast!

    => mehr Infos - mehr Antworten

  20. #20
    Contao-Nutzer
    Registriert seit
    22.08.2016.
    Beiträge
    9

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    wie hast Du den die beiden MM "verbunden"?

    zur Info: hier hat keiner Kristallkugeln oder ist Hellseher - keine Ahnung was Du da bei Dir gemacht hast!

    => mehr Infos - mehr Antworten
    Ich habe ein sehr simples zweites Metamodel angelegt, mir nur einem Attribut: Name https://www.dropbox.com/s/7zrlkoes23...26.11.JPG?dl=0

    Im meinem Haupt Metamodel habe ich dann entsprechend ein neues Auswahl Attribut angelegt mit folgenden Einstellungen:
    https://www.dropbox.com/s/ttpz9apa7w...22.00.JPG?dl=0

    Damit kann ich dann meinen Hersteller auswählen in meinem Hauptmetamodel: https://www.dropbox.com/s/djjtr0cwp6...28.26.JPG?dl=0
    Der Hersteller wird dort eben aus dem 2. Metamodel geholt anhand des Select Attributes wie oben erwähnt.

    In der FE Ausgabe hat der supplier key im Array dann aber keinen Wert, obwohl ein Hersteller ausgewählt worden ist: https://www.dropbox.com/s/v53qruf7hy...27.32.JPG?dl=0
    Geändert von crizzo (22.08.2016 um 16:28 Uhr)

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

    Standard

    hast Du in den Render-Einstellungen für das FE das Attribut "supplier" mit aufgeführt und sichtbar gemacht/aktiviert?

  22. #22
    Contao-Nutzer
    Registriert seit
    22.08.2016.
    Beiträge
    9

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    hast Du in den Render-Einstellungen für das FE das Attribut "supplier" mit aufgeführt und sichtbar gemacht/aktiviert?
    Das war der Fehler, dass habe ich tatsächlich vergessen. Ebenso für mein file Attribut, vielen Dank.

  23. #23

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
  •