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

Märchen

Fabel - Haft

fabelhaft

Übrigens: Märchenerzähler kommen in Fabelhaft!

= Ernst August =

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