it-swarm.com.de

Werte von JFormFieldRepeatable anzeigen

Ich verwende ein J3.x-Plugin namens Aixeena CCK http://extensions.joomla.org/extensions/extension/authoring-a-content/content-construction/aixeena-cck , das zusätzliche Felder hinzufügt Artikel, die Standard-JForm-Feldtypen verwenden.

Ich habe einen wiederholbaren Formularfeldtyp eingerichtet https://docs.joomla.org/Repeatable_form_field_type der einfach folgende Textfelder enthält:

<field name="addresses" type="Repeatable" icon="list" description="" label="Addresses" default="">
    <fields name="params">
        <fieldset hidden="true" name="addresses_modal" repeat="true">
            <field name="address" label="Address" size="60" type="text" />
        </fieldset>
    </fields>
</field>

In meiner Artikelüberschreibung habe ich den folgenden Code:

<?php
$attribs = json_decode($this->item->attribs);
print_r($attribs->addresses);
?>

Dies ergibt:

{"Adresse": ["Meine Adresse 1", "Meine Adresse 2"]}

"Groß!" Ich dachte, ich benutze einfach eine foreach-Schleife, um die einzelnen Werte abzurufen. Also habe ich folgenden Code benutzt:

<?php
foreach($attribs->addresses as $address){
    echo $address;
}
?>

Das hat aber nicht funktioniert. Ich habe gerade eine Fehlermeldung erhalten: "Warnung: Ungültiges Argument für foreach () angegeben".

Meine Frage ist also: Wie kann ich jeden einzelnen Wert in dieser Zeichenfolge speichern?

BEARBEITET

Ergebnisse von var_dump($attribs->addresses);

string(135) "{"address":["My Address 1","My Address 2"]}"

WIEDER BEARBEITET

Dank @Lodder verwende ich jetzt:

$attribs = json_decode($this->item->attribs);
$addresses = $attribs->addresses;
$addresses = json_decode($addresses, true);
foreach ($addresses as $index=>$address) 
    {   
        echo $address[0] . '<br>';
        echo $address[1];
    }

Dies gibt Folgendes zurück: Meine Adresse 1 Meine Adresse 2

Das ist großartig, aber meine Frage ist jetzt; Wie führe ich die foreach-Schleife automatisch durch? Was ich meine ist; Im Moment muss ich echo $address[1] und dann echo $address[2] usw. hinzufügen. Der Punkt eines wiederholbaren Feldes ist jedoch, dass der Benutzer so viele Felder hinzufügen kann, wie er möchte. Ich hoffe ich mache Sinn :)

Gelöst:

$attribs = json_decode($this->item->attribs);
$addresses = $attribs->addresses;
$addresses = json_decode($addresses);
foreach ($addresses as $index=>$addresses) 
    {   
        foreach($addresses as $address){
            echo '<p>'.$address.'</p>';
        }
    }
3
DesignSubway

Ein großes Dankeschön an @Lodder (wie immer), der mir dabei geholfen hat. Ich weiß nicht, ob meine Antwort der beste Weg ist, das gewünschte Ergebnis zu erzielen, aber es funktioniert und darauf kommt es an.

Folgendes habe ich verwendet:

$attribs = json_decode($this->item->attribs);
$addresses = $attribs->addresses;
$addresses = json_decode($addresses);
foreach ($addresses as $index=>$addresses) 
    {   
        foreach($addresses as $address){
            echo $address;
        }
    }

Hoffentlich hilft das jemand anderem.

2
DesignSubway