Seite 1 von 1

JSON Unterstüzung für we:var

Verfasst: Mo 12. Dez 2022, 18:45
von Finn
Moin Moin,

in Zeiten der JS Frontend Frameworks vermisse ich in den we:tags die Möglichkeit, mit JSON umgehen zu können.

Für Inputs:
// read json post data
$json = file_get_contents('php://input');


Für Umwandlungen in beide Richtungen
// decode json post data
$data = json_decode($json, true);

Eventuell wäre es auch denkbar bei Listviews json="true" zu wählen, um ein entsprechendes Objekt auszugeben.

Was meint ihr? Ist das denkbar oder einfach weiterhin natives PHP zwischen setzten?

Um ein LV als JSON auszugeben, mache ich gerade immer das:

Code: Alles auswählen

<?php $i = 1;	?>

<we:condition name="datumFilter">
<we:conditionAdd field="Datum" compare=">" type="today" />
</we:condition>


<we:listview type="object" classid="4" order="Datum" desc="false" condition="\$datumFilter" >
		<we:repeat>
			<we:field type="img" name="Bild" only="src" to="global" thumbnailid="8" nameto="daten[$i][bild]" />
			<we:field type="text" name="Titel" to="global" nameto="daten[$i][titel]" />
			<we:field type="date" name="Datum" format="Y-m-d" to="global" nameto="daten[$i][date]" />
			<we:field type="date" name="Datum" format="time" to="global" nameto="daten[$i][time]" />
			<we:field type="date" name="Datum" format="D" to="global" nameto="daten[$i][weekday]" />
			<we:field type="href" name="LinkTicket" to="global" nameto="daten[$i][ticketlink]" />
			<we:field type="text" name="we_path" to="global" nameto="daten[$i][pfad]" />
			<?php $i++; ?>
		</we:repeat>
	</we:listview>

	<?php 
	header('Content-Type: application/json; charset=utf-8');
	echo json_encode( $GLOBALS['daten'] );
	?>

Re: JSON Unterstüzung für we:var

Verfasst: Mo 12. Dez 2022, 18:56
von blickfang
Hi,
webEdition weiß ja nicht was du mit den Feldern anstellen willst und ob du eine src, eine id oder was auch immer vom Feld zurück haben willst. Ich denke daher dass hier php mehr Sinn macht.

Code: Alles auswählen

<?php $myArray = []; ?>
<we:repeat>
<?php $myArray[] = [
	'feld' => we_tag_listview::$current->f('meinFeld'),
	'feld2' => we_tag_listview::$current->f('meinFeld2')
]; 
?>
</we:repeat>
<?php json_encode($myArray); 
Oder man führt einen response type für die listview ein z.B. type="json" und type="print". Wählt man json, dann muss man sagen, wie die variabe heißen soll in die das json geschrieben wird to="meineVar" oder so. Und dann sollte ein <we:field name="meinfeld" only="id" /> den Wert in die bezeichnete Variable schreiben, statt auszugeben. Evtl. sogar machbar, halte ich aber für überdosiert, da webEdition ja kein php nachbauen möchte.

VG, Timo

Re: JSON Unterstüzung für we:var

Verfasst: Mo 9. Jan 2023, 10:04
von haydi
Finde tatsächlich auch, dass man dies nicht über webEdition abbilden braucht.
Habe tatsächlich auch einen Kunden, da muss ich das JSON in zwei verschiedenen Versionen zurückgeben (einmal mit [] und einmal ohne). Nee, fühlt sich zu kompliziert an, denke ich.

@Timo: Wäre das nicht ein hübsches Beispiel für die Doku?