Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 12. Juni 2012 17:09

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Array-Element über Variable ansprechen

Moin.

Folgendes Problem:

Ich möchte ein Element eines Arrays über eine Variable ansprechen. Mit einem festen Wert geht das:

[== smarty ==]
{assign var=eventlist value=$xml->veranstaltung}
{$eventlist[1]->datum}

wenn ich aber nun eine Variable verwende:

[== smarty ==]
{$eventlist[$event]->datum}

dann tut sich nichts. $event hat den Wert 1 ...

Ich habe schon ewig im Netz gesucht, ohne Erfolg.
Meist wird zu
{$eventlist.$event.datum}
geraten, aber das funktioniert ebenfalls nicht. Auch
{$eventlist.$event->datum}
nicht.

Hat jemand nen Tipp?
Servus,
Alex

Beitrag geändert von faglork (12. Juni 2012 17:24)

Offline

#2 13. Juni 2012 17:03

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Array-Element über Variable ansprechen

Also:

{assign var=eventlist value=$xml->veranstaltung}
{assign var=element value=$eventlist[$event]}
<p>$event : {$event}
<p>$element->datum : {$element->datum}
<p>$eventlist[1]->datum : {$eventlist[1]->datum}
<p>$eventlist[$event]->datum : {$eventlist[$event]->datum}
<p>$eventlist.$event->datum : {$eventlist.$event->datum}
<p>$xml->veranstaltung[1]->datum : {$xml->veranstaltung[1]->datum}
<p>$xml->veranstaltung.$event->datum : {$xml->veranstaltung.$event->datum} 

der Output:

$event : 1
$element->datum :
$eventlist[1]->datum : 15.06.2012
$eventlist[$event]->datum :
$eventlist.$event->datum :
$xml->veranstaltung[1]->datum : 15.06.2012
$xml->veranstaltung.$event->datum :

--> es funzt nur mit fixen Werten.

Das kann doch nicht sein? Da muss es doch eine Lösung geben?

Servus,
ALex

Offline

#3 14. Juni 2012 08:25

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: Array-Element über Variable ansprechen

Was gibt denn

<pre>{$eventlist|print_r}</pre> 

aus?

Offline

#4 14. Juni 2012 09:59

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Array-Element über Variable ansprechen

eventlist|print_r :

SimpleXMLElement Object
(
    [titel] => Geführte Halbtagswanderung
    [untertitel] => In der inneren Fränkischen Schweiz
    [beschreibung] => Text wegen Lesbarkeit gekürzt
    [kategorie] => Sport & Natur
    [rubrik] => Wandern
    [datum] => 14.06.2012
    [uhrzeit] => 13:30
    [ort] => Parkplatz Oberes Tor
    [stadt] => Stadt
    [anschrift] => Oberes Tor
    [plz] => 91320
    [veranstalter] => Fränkische-Schweiz-Verein
    [karten] => Mitfahrgeld 2,00 €
    [link] => http://domain.de
    [zeitstatus] => 1
    [endzeit] => 17:00
)

Gibt print_r nur das erste Element aus?

Die komplette Struktur der von XMLMadeSimple geladenen XML-Datei: http://tinyurl.com/cv3ctsr

Aber an der Struktur kann es doch nicht liegen wenn mit fixen Werten alles bestens funktioniert?


Servus,
Alex

Beitrag geändert von faglork (14. Juni 2012 10:03)

Offline

#5 14. Juni 2012 11:10

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Array-Element über Variable ansprechen

Im Smarty-Forum kam grad der Hinweis dass $event wohl ein String sei statt einer Integer.

Nuja. Die Variable wird ursprünglich generiert durch hochzählen:
{assign var=anz value=$smarty.foreach.count.index}
--> integer
dann als request variable übergeben:
a href="/{$page_alias}.html?event={$anz}"

und dann auf der Detailseite ausgelesen:
{assign var=event value=$smarty.request.event}

Dabei geht wohl der ursprüngliche Typ verloren, aus ner Integer wird ein String :-(

Wie kann ich den Typ denn umwandeln? (Das Online Smarty Manual ist sch...)


EDIT: {math equation="x + y" x=$event y=1} funzt perfekt, also ist es doch ein integer???

Servus,
Alex

Beitrag geändert von faglork (14. Juni 2012 11:26)

Offline

#6 14. Juni 2012 11:35

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: Array-Element über Variable ansprechen

Probier mal folgendes:

{capture}{$event|@intval}{/capture}
{$eventlist[$event]->datum}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#7 14. Juni 2012 15:25

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: Array-Element über Variable ansprechen

NaN schrieb:

Probier mal folgendes:

{capture}{$event|@intval}{/capture}
{$eventlist[$event]->datum}

negativ ...

Servus,
ALex

Offline