Ergebnis 1 bis 23 von 23

Thema: Twig - deserialize rsce_data

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard Twig - deserialize rsce_data

    Hallo,

    wie kommt man denn an diese Daten ran bzw verarbeitet die im Twig? einen Filter für deserialize scheint es in Contao bzw RSCE nicht zu geben?

    Wenn das noch Zukunftsmusik ist belasse ich es vorerst bei den html5 Templates.
    Liebe Grüße
    WebRoxx


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

    Standard

    Einen json_decode Filter gibt es nicht von Haus aus in Twig. "Zukunftsmusik" ist das auch nicht, wenn es niemand in der Zukunft implementiert . Wenn du das brauchst, wirst du es dir selbst in deiner App hinzufügen müssen.

    Aber: warum genau brauchst du das überhaupt?
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Aber: warum genau brauchst du das überhaupt?
    Naja das Value für RSCE sieht ja scheinbar so aus

    HTML-Code:
    "rsce_data" => "{"projects":[{"title":"..."....
    Oder steh ich grad voll auf dem Schlauch weil es noch kein Mittag gab

    EDIT: hab grad gesehen das es für "projects" ja auch ne extra variable gibt.... ergo doch der Hunger schuld, oh man
    Liebe Grüße
    WebRoxx


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

    Standard

    Die RockSolid Custom Elements übergeben ja schon die dekodierten Daten an das Template. Daher die Frage was genau du überhaupt machen willst.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die RockSolid Custom Elements übergeben ja schon die dekodierten Daten an das Template. Daher die Frage was genau du überhaupt machen willst.
    Zitat Zitat von WebRoxx Beitrag anzeigen
    EDIT: hab grad gesehen das es für "projects" ja auch ne extra variable gibt.... ergo doch der Hunger schuld, oh man
    Man sollte halt wirklich erstmal korrekt schauen sorry
    Liebe Grüße
    WebRoxx


  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Eine Sache klemmt trotzdem

    wenn ich

    Code:
    {% import "@ContaoCore/Image/Studio/_macros.html.twig" as studio %}
    
    {{- studio.figure(data.image) -}}
    einfüge kommt folgender Fehler


    Impossible to access an attribute ("linkHref") on a string variable ("b87b4f65-85ad-11eb-880f-1c1b0d437b94").
    und wie bekomme ich die Größe übermittelt die liegt ja wirklich nur in diesem Format vor

    Code:
    "size" => "a:3:{i:0;s:0:"";i:1;s:0:"";i:2;s:1:"6";}"
    Liebe Grüße
    WebRoxx


  7. #7
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard RSCE - Bildergallerie Deserialize

    Ich hoffe, meine Frage passt hier rein, da ich versuche, eine Bildergallerie in Twig auszugeben und auf dem Schlauch stehe, wie ich nun die multiSRC aufgelöst bekomme.

    Bisher habe ich das so umgesetzt

    RSCE-Config
    Code:
    'multiSRC' => array (
      'label' => array('Bilder und Ordner', ''),
      'inputType' => 'standardField',
      'eval' => array (
        'isGallery' => true,
        'multiple' => true,
        'fieldType' => 'checkbox',
        'orderField' => 'orderSRC',
        'files' => true,
        'extensions' => \Config::get('validImageTypes'),
        'tl_class' => 'clr',
        'mandatory' => true
      )
    ),
    Template
    Code:
    <?php
    $dataSorted = Contao\StringUtil::deserialize($this->multiSRC);
    ?>
    
    <div class='ce_gallery __galleryContainer content-gallery'>
      <ul>
      <?php foreach($dataSorted as $data): ?>
        <li>
          <figure>
            <?php if($image = $this->getImageObject($data, array('','', 1))): ?>
              <?php $this->insert('picture_default', $image->picture); ?>
            <?php endif; ?>
          </figure>
        </li>
      <?php endforeach; ?>
      </ul>
    </div>

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

    Standard

    Das musst du nicht selbst deserialisieren, unabhängig davon ob du Twig nutzt oder nicht. Siehe https://community.contao.org/de/show...l=1#post582040
    » sponsor me via GitHub or PayPal or Revolut

  9. #9
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das musst du nicht selbst deserialisieren, unabhängig davon ob du Twig nutzt oder nicht. Siehe https://community.contao.org/de/show...l=1#post582040
    Das hatte ich bereits gelesen, leider sagt mir das nichts im Sinne, wie ich es nun umsetzen soll.

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

    Standard

    Du meinst, wie man im Twig bspw. eine for-Schleife umsetzt..? Die Dokumentation zu Twig kennst du schon? https://twig.symfony.com/doc/
    » sponsor me via GitHub or PayPal or Revolut

  11. #11
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Du meinst, wie man im Twig bspw. eine for-Schleife umsetzt..? Die Dokumentation zu Twig kennst du schon? https://twig.symfony.com/doc/
    Ja, kenn ich, ist im ein wichtigstes Werkzeug gerade

    So hatte ich es versucht, gibt aber nichts aus, auch keinen Fehler.

    Code:
    {% use "@Contao/component/_figure.html.twig" %}
    
          <ul>
          {% for data in multiSRC %}
               <li>
    
                {% set galFigure = figure(data, 52, { 
                  enableLightbox: true,
                  lightboxGroupIdentifier: 'galleryImages',
                }) %}
                {% with {figure: galFigure} %}{{ block('figure_component') }}{% endwith %}
    
             </li>
          {% endfor %}
          </ul>

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

    Standard

    Die Template-Daten befinden sich in data (also bspw. data.multiSRC). Mit {% dump() %} kannst du dir die Template-Daten anzeigen.
    » sponsor me via GitHub or PayPal or Revolut

  13. #13
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die Template-Daten befinden sich in data (also bspw. data.multiSRC). Mit {% dump() %} kannst du dir die Template-Daten anzeigen.
    mit dump hatte ich es bereits versucht den Aufbau zu verstehen, scheitere aber auch jetzt wieder

    Dump-Ausgabe vor der Schleife

    Code:
    {{ dump(multiSRC) }} oder {{ dump(data.multiSRC) }} // erzeugt die gleiche Ausgabe, obwohl data noch gar nicht existiert
    
    erzeugt:
    b"
    a:33:{i:0;s:16:"¬5WÓÁ3
    \x11
    ¯®
    \x04
    ¨·
    \x1E
    #
    \x02
    Ä";i:1;s:16:"¬5A8Á3
    ......


    Dump-Ausgabe innerhalb der Schleife
    Code:
    <ul>
    {% for data in multiSRC %}
       <li> // li tags werden nicht erzeugt
       {{ dump(data) }}
       Ausgabe->nichts
      </li>
    {% endfor %}
    </ul>
    irgendwas verstehe ich etwas falsch oder habe einen Denkfehler,sorry

  14. #14
    Contao-Fan
    Registriert seit
    24.02.2021.
    Beiträge
    455

    Standard

    Oder du schreibst dir deine eigene Twig-Funktion
    PHP-Code:
    <?php
    // src/Twig/AppExtension.php

    namespace App\Twig;

    use 
    Contao\StringUtil;
    use 
    Twig\Extension\AbstractExtension;
    use 
    Twig\TwigFilter;

    class 
    AppExtension extends AbstractExtension
    {
        public function 
    getFunctions(): array
        {
            return [
                new 
    TwigFunction('deserialize', [$this'deserialize'])
            ];
        }

        public function 
    deserialize(string $value): array
        {
            return 
    StringUtil::deserialize($valuetrue);
        }
    }
    Usage:
    PHP-Code:
    {% set foo deserialize(data.bar) %} 

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

    Standard

    Zitat Zitat von HBR Beitrag anzeigen
    // erzeugt die gleiche Ausgabe, obwohl data noch gar nicht existiert
    data wird vom Controller (Inhaltselement) gesetzt - das sind die Daten des Inhaltselements (aus der Datenbank).
    » sponsor me via GitHub or PayPal or Revolut

  16. #16
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    data wird vom Controller (Inhaltselement) gesetzt - das sind die Daten des Inhaltselements (aus der Datenbank).
    Jetzt blick ich gar nicht mehr durch: Zuerst meinte Spooky, dass ich die daten nicht mehr deserialisieren muss, was ich so verstanden habe, dass ich die Daten der multiSRC direkt in einer For-Schleife ausgegeben bekomme. Zoglo schreibt, man kann das mit Hilfe einer eigenen Funktion lösen, die aber wieder zu deserialisieren scheint. Ich will nur wissen, was ich machen muss, damit der Code-Schnipsel vereinfacht ausgedrückt irgendwie funktioniert.

    Code:
            {% for dataImage in multiSRC %}
                {{ contao_figure(dataImage, 55) }}  
            {% endfor %}

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

    Standard

    Evt. übergibt die Extension diese Daten doch nicht unserialized an das Template.
    » sponsor me via GitHub or PayPal or Revolut

  18. #18
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard gelöst

    ich habe für mich eine sehr einfache Lösung gefunden, RSCE Gallerien in Twig Umzusetzen, vielleicht hilft es ja jemand: {{ content_element('gallery', ....) }}


    RSCE-Config
    Code:
    'multiSRC' => array (
      'label' => array('Bilder und Ordner', ''),
      'inputType' => 'standardField',
      'eval' => array (
        'isGallery' => true,
        'multiple' => true,
        'fieldType' => 'checkbox',
        'orderField' => 'orderSRC',
        'files' => true,
        'extensions' => 'jpg,jpeg,png',
        'tl_class' => 'clr',
        'mandatory' => true
      )
    ),
    RSCE-Twig
    Code:
       {% set imageSizeId = 8 %} 
       {% set lightBox = true %} 
       {% set columnSize = 4 %}
    
        {{
          content_element('gallery', {
            multiSRC: data.multiSRC,
            size: imageSizeId,
            sortBy: '',
            perRow: columnSize,
            limit: 36,
            fullsize: lightBox,
          })
        }}
    Im Twig Template wird automatisch ein Wrapper mit den entsprechenden Klassen erzeugt inkl. der Liste. Weitere Optionen, die anscheinend möglich sind habe ich bisher noch nicht gefunden. Vielleicht hilft es ja jemand.

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

    Standard

    Zitat Zitat von HBR Beitrag anzeigen
    Weitere Optionen, die anscheinend möglich sind habe ich bisher noch nicht gefunden. Vielleicht hilft es ja jemand.
    Die kannst du dir aus dem Backend ablesen (also wenn du ein Galerie Inhaltselement erzeugst oder editierst).
    » sponsor me via GitHub or PayPal or Revolut

  20. #20
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Die kannst du dir aus dem Backend ablesen (also wenn du ein Galerie Inhaltselement erzeugst oder editierst).
    naja, ablesen ist leichter gesagt als getan, bei der Sortierung zum Beispiel ist "zufällige Reihenfolge = random", "individuelle Reihenfolge = ? " usw.

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

    Standard

    Zitat Zitat von HBR Beitrag anzeigen
    naja, ablesen ist leichter gesagt als getan, bei der Sortierung zum Beispiel ist "zufällige Reihenfolge = random", "individuelle Reihenfolge = ? " usw.
    Das kannst du dir aus dem <select> ablesen (also das value Attribut der jeweiligen <option>).
    » sponsor me via GitHub or PayPal or Revolut

  22. #22
    Contao-Nutzer Avatar von HBR
    Registriert seit
    18.09.2010.
    Beiträge
    56

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das kannst du dir aus dem <select> ablesen (also das value Attribut der jeweiligen <option>).
    OOOH, ich Depp. da kann man aber echt draufkommen Manchmal denkt man einfach zu kompliziert. sorry

  23. #23
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.111
    Partner-ID
    10107
    » sponsor me via GitHub or PayPal or Revolut

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •