ezselection und seine Werte

eZ publish
13.02.2015

In den eZ Objekten werden in der Regel so allerhand nützliche und weniger nützliche Informationen herumgeschleppt. Eben so alles, was es an Informationen zu einem Objekt aus der Datenbank zu holen gibt.

Umso verwunderlicher, dass bei dem Attribut ezselection eine aus meiner Sicht nicht ganz unwesentliche Information fehlt: Die Bezeichnung der Option.

Ziehen wir ein Beispiel an den Haaren:

Über ein Adressformular wird die Anrede abgefragt:

<select name="Anrede">
<option value="1">Frau</option>
<option value="2">Herr</option>
<option value="3">Speziell</option>
</select>

Aus der Information soll per PHP eine personalisierte Mail mit korrekter Anrede erstellt werden. Klar, dass in der Mail nicht „1 Müller“ oder „2 Meier“, sondern „Frau Müller“ und „Herr Meier“ stehen soll. Also frohen Mutes ans Werk:

Wie heisst also der name zur option?

Wir haben den Node und kommen auch locker, flockig an das Attribut ran:

$data_map = $node->dataMap();
$attribute = $data_map['Anrede'];

Wer jetzt meint, in dem Attribut liesse sich irgendwo ein „Herr“, „Frau“ oder „Speziell“ finden, wird enttäuscht. Nichts dergleichen ist in dem Object zu finden. Lediglich die value wird mitgeliefert:

$value = $attribute->DataText;

Da steht dann entsprechend 1, 2 oder 3 drinnen.

Ich will jetzt niemanden auf die Folter spannen, deshalb gleich zur Auflösung:

Mit Hilfe von classContent() kann man sich den gewünschten Wert suchen:

$class_content = $data_map['Anrede']->classContent();
$option = $class_content['options'][$data_map['Anrede']->DataText]['name'];

Das Netz schweigt sich aus zu diesem Thema. Anscheinend hat außer mir noch niemand mit dem Problem zu tun gehabt.

Ach ja, im Template kommt man ähnlich einfach ans Ziel:

{$node.data_map.SELECTION.class_content.options[$node.data_map.SELECTION.value[0]].name}
comments powered by Disqus

Steinbrück

Bescheidenheit ist eine Zier

wenn Du nicht Kanzler willst, dann sag es einfach. Bist doch sonst ein Freund klarer Worte. Ganz einfach, pass auf: Ich will nicht Kanzler.

Aber so durch die Hintertür? Das ist doch nichts. Mitten im Wahlkampf eine Debatte lostreten, von wegen das Kanzlergehalt ist zu niedrig. Sparkassendirektoren verdienten mehr.

A ? B C D E F G H I J K L M N O P Q R S T U V W Z