Ergebnis 1 bis 3 von 3

Thema: Events: repeatEach: Das Array im Array auslesen

  1. #1
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    104

    Standard Events: repeatEach: Das Array im Array auslesen

    Moin moin,

    ich bastel gerade ein bisschen an verschiedenen Möglichkeiten zur Datumsausgabe
    herum. Ich verwende auch die Erweiterung, um Events wiederholen zu lassen. Dabei
    möchte ich im Frontend später ausgeben können:

    jeden 2. Samstag bzw. jeden Samstag

    Sagen wir, ich lege mich darauf fest, die Intervalle nur mit Tagen zu steuern, also
    alle 2, 3, 4, 5, ... Tage.

    Wie kann ich die Templatevariable, die ihrerseits ein Array enthält auswerten, um
    mit den Zahlenwerten zu rechnen? Sprich, welche Adresse hat der Zahlenwert der
    Spalte "Value" ?

    Code:
    [repeatEach] => a:2:{s:4:"unit";s:4:"days";s:5:"value";s:1:"7";}
    Dann muss ich noch prüfen, ob die Anzahl der Tage geteilt durch 7 eine ganze Zahl
    ergibt. In dem Fall soll im Frontend z.B. "jeden 2. Mittwoch" stehen. Wenn nicht, einfach
    nur der Wert aus dem Array z.B. "alle 4 Tage".

    Kann mir da jemand auf die Sprünge helfen, ich habe die o.g. Form eines Arrays bisher
    noch nicht gesehen und weiß nicht, wie ich da nun hindurchnavigieren kann.

    LG Papillon

  2. #2
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Das was du hier siehst ist auch kein herkömmliches array, hierbei handelt es sich um ein serialisiertes Array. Um aus diesem ein lesbares Array zu machen benötigst du die Contao Funktion
    deserialize. Anschließend hast du ein normales Array und kannst dieses weiterverarbeiten.
    Kein Privat Support via PM.

  3. #3
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    104

    Standard

    Moin moin,

    vielen Dank für diese Antwort! Das führt mich ja schonmal näher
    an des Problems Lösung heran.

    Ich muss gestehen, von PHP wenig bis keine Ahnung zu haben, daher
    nähere ich mich der Lösung wie folgt:

    PHP-Code:
    <?php $periode unserialize($events['repeatEach']); ?>
    <?php 
    if(is_array($periode)): ?>
      <?php echo $this->$events['repeatEach']['value']; ?>
    <?php 
    endif; ?>
    1. Da 'repeatEach' ja ein Bestandteil des Event-Arrays ist, ist es korrekt, dass ich dann
    $events['repeatEach'] benutze? Wie ist die "genaue Adresse" des Eintrags 'repeatEach' ?
    2. Wie adressiere ich dann die Einträge in 'repeatEach' ? Serialisiert lassen sich dort ja die
    Spalten 'unit' und 'value' ablesen.

    Bisher konnte ich leider keine Werte ausgeben..


    EDIT: Ich glaub ich habs gelöst:
    PHP-Code:
    <?php $periode unserialize($this->repeatEach); ?>
    <?php 
    if(is_array($periode)): ?>
    <?php 
    echo $periode['value']; ?>
    <?php 
    endif; ?>
    Gibt mir wunderbar den Wert des jeweiligen Events aus. Sehr schön. Wieder was gelernt.

    Dann suche ich jetzt nur noch nach einem Weg, den ausgegebenen Wert durch 7 zu teilen
    und wenn eine ganze Zahl dabei herauskommt, soll diese Zahl in
    PHP-Code:
    <?php echo 'Jeden '.$ganzezahl.'. '.$this->parseDate('l'$this->startDate); ?>
    ausgegeben werden. Wenn keine ganze Zahl herauskommt, soll
    PHP-Code:
    <?php echo 'Alle '.$keineganzezahl.' Tage'?>
    ausgegeben werden.

    Wie untersuche ich das nun?

    EDIT: Auch das habe ich gelöst:
    PHP-Code:
    <?php if (is_int($wert)): // Wenn $wert eine ganze Zahl ergibt: ?>
    Meine Güte, für so ein paar individuelle Datumsausgaben kommt ja ganz schön was an Code zusammen..
    Geändert von Papillon (23.08.2011 um 14:14 Uhr)

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
  •