Wert des wiederholbaren Felds aus dem Joomla XML-Manifest abrufen


7

wiederholbar - Wie erhalte ich Werte von diesem Feldtyp?

Ich codiere ein freies Modul mit einem wiederholbaren Feld.

<field name="star_slides" type="Repeatable" icon="list" description="" label="Edit Your Slides" default="{'main_image':[''],'left_side':[''],'right_side':['']}">

Für einen normalen Modulparameter kann ich einen solchen Wert erhalten

$test         = $params->get('test');

Wenn ich das gleiche für das wiederholbare Feld mache

$test         = $params->get('star_slides');

Ich erhalte alle Werte des Hauptfelds - Sieht aus wie eine Array-Ausgabe.

Wie mache ich das für ein wiederholbares Formularfeld und erhalte den Wert JEDER Wiederholung des Feldes?

Im obigen Fall ist es beispielsweise mein Ziel, den Wert des Feldes "main_image" für jede Wiederholung zu erhalten. Ich denke, benutze "für jeden", bin mir aber nicht sicher, wie ich durchkomme und die Werte jeder Zeile, jedes Felds nacheinander ziehe.

Antworten:


2

Da Sie Daten von Ihrem Anruf erhalten und es sich um ein Array handelt, können Sie dies einfach tun (Ausgehend von der Idee, dass Sie an einem Entwicklerserver / -system arbeiten)

echo '<pre>';
print_r($test);
echo '</pre>';

Dies zeigt Ihnen, welche Daten Sie herausholen, und Sie können dann überprüfen, ob sie Ihre benötigten Daten enthalten (welche es sollte).

Sie können dann eine einfache foreach-Schleife verwenden, um das zu erhalten, was Sie möchten

foreach($test as $val){
   //Store in another array or do what ever you want with the values
}

(Und wenn Sie auch den Namen des wiederholten Feldes möchten)

foreach($test as $key => $val){
       //Store in another array or do what ever you want with the values
}

Oder Sie sollten in der Lage sein, einen einfachen $ test ['field'] wie einen normalen Array-Wert durchzuführen. Denken Sie daran, dass Sie möglicherweise ein wenig in das Array eintauchen müssen, entweder durch einen zusätzlichen Foreach oder indem Sie Ihren ersten Foreach bei Bedarf am sekundären Array starten lassen.


Bearbeitet über Antwort
Stern

2
@Star, das Bearbeiten und vollständige Ändern einer Antwort (Sie haben nur 3 Wörter von der ursprünglichen Antwort übrig gelassen ...) ist nicht die richtige Art, JSE zu verwenden. Bitte kommentieren Sie bei Bedarf oder fügen Sie eine weitere Antwort hinzu, wenn Sie eine Lösung gefunden haben.
Johanpw

@johanpw - Nun - ich habe die Antwort bearbeitet, weil sie jeden Benutzer genauso verwirren würde wie mich. Dies ist eine Joomla-spezifische Frage, und meine Antwort war relevanter. Sieht so aus, als hätten Sie meine Antwort, die kurz vor dem Abschluss stand, nicht gebilligt. Auf diese Weise tun Sie in JSE KEIN GUTES.
Star

1
@Star, deine Bearbeitung sollte als Antwort gepostet werden. Wenn es Ihr Problem löst, können Sie es als akzeptiert markieren. Andernfalls können andere Benutzer möglicherweise eine umfassendere Antwort erhalten. Wenn die obige Antwort falsch ist, können Sie sie für die Aufmerksamkeit des Moderators markieren. Ich habe noch eine Kopie Ihrer ursprünglichen Bearbeitung, wenn Sie sie als Antwort veröffentlichen möchten.
Johanpw

"Wenn ich den Inhalt eines wiederholbaren Joomla-Feldsatzes wiedergebe, erhalte ich das folgende Ergebnis: {"Field1":["/demo/slide1.jpg","/demo/slide2.jpg"],"Field2":["Content 1","Content 2"],"Field 3":["Content 3","Content 4"]} Jetzt wird das obige Ergebnis erhalten durch: $params->get('star_slides'); Das Obige ist NUR eine Teilantwort basierend auf dem, was ich bisher getan habe. Mein Ziel ist es, die einzelnen Werte von zu extrahieren die Felder Set 1 - Werte des ersten Feldsatzes. /demo/slide1.jpg Inhalt 1 Inhalt 3 Wie kann ich das mit PHP machen? "
Johanpw

0

Wenn

$test = $params->get('star_slides');

und

print_r($test);

erhalten Sie ein ähnliches Array

Array ( [image] => Array ( [0] => images/blog/blog_01.jpg [1] => images/blog/blog_02.jpg [2] => images/blog/blog_03.jpg ) [image_alt] => Array ( [0] => Web Designer [1] => Graphic Designer [2] => Painting Outdoors ) )

verwenden

foreach ($test['image'] as $k => $v) {
  echo $v; // image
  echo $test['image_alt'][$k]; // etc.
}

Luk

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.