Hallo zusammen
Ich habe eine Adressverwaltung programmiert. Die Adressen werden mit 1:n einem Club zugeordnet. Im Frontend gibt es 4 identische Eingabemasken auf der gleichen Seite. Eine für die Adresse des Clubpräsidenten eine für den Coach etc.
<f:form action="update" name="club">
<f:for each="{addresses}" as="address" key="count">
<div class="wrapper">
<h2><f:translate key="tx_isclubmanager.addresstyp.{address.typ}" /></h2>
<div class="tx_col1">
<div class="tx_label"><label><f:translate key="tx_isclubmanager.vorname" /> <span class="required">*</span></label></div>
<div class="tx_input"><f:form.textfield name="Vorname[]" value="{address.vorname}" /></div>
<div class="tx_label"><label><f:translate key="tx_isclubmanager.name" /> <span class="required">*</span></label></div>
<div class="tx_input"><f:form.textfield name="Name[]" value="{address.name}" /></div>
<div class="tx_label"><label><f:translate key="tx_isclubmanager.street" /> <span class="required">*</span></label></div>
<div class="tx_input"><f:form.textfield name="Street[]" value="{address.street}" /></div>
<div class="tx_label"><label><f:translate key="tx_isclubmanager.plz" /> / <f:translate key="tx_isclubmanager.place" /> <span class="required">*</span></label></div>
<div><f:form.textfield name="PLZ[]" value="{address.plz}" value="{address.plz}" style="width:60px" /> <f:form.textfield name="Place[]" value="{address.place}" style="width:183px" /></div>
</div>
<div class="tx_col2">
<div class="tx_label">
<label><f:translate key="tx_isclubmanager.tel1" /> <span class="required">*</span></label></div>
<div class="tx_input"><f:form.textfield name="Tel1[]" value="{address.tel1}" /></div>
<div class="tx_label">
<label><f:translate key="tx_isclubmanager.tel2" /></label></div>
<div class="tx_input"><f:form.textfield name="Tel2[]" value="{address.tel2}" /></div>
<div class="tx_label"><label><f:translate key="tx_isclubmanager.email" /> <span class="required">*</span></label></div>
<div class="tx_input"><f:form.textfield name="Email[]" value="{address.email}" /></div>
</div>
<f:form.hidden name="addresstyp" value="{address.typ}" />
<hr class="dividerBlue" />
</div>
</f:if>
</f:for>
</f:form>
Im Controller lese ich dann die Arrays einzeln aus und speichere die Änderungen:
$club = $this->clubRepository->findByUid(1);
$addresses = $club->getAddresses();
$vorname = $this->request->getArgument("Vorname" );
$name = $this->request->getArgument("Name" );
$street = $this->request->getArgument("Street" );
$plz = $this->request->getArgument("PLZ" );
$place = $this->request->getArgument("Place" );
$tel1 = $this->request->getArgument("Tel1" );
$tel2 = $this->request->getArgument("Tel2" );
$email = $this->request->getArgument("Email" );
for ($i = 0; $i <= 3; $i++) {
$addresses[$i]->SetVorname($vorname[$i] );
$addresses[$i]->SetName($name[$i] );
$addresses[$i]->SetStreet($street[$i] );
$addresses[$i]->SetPlz($plz[$i] );
$addresses[$i]->SetPlace($place[$i] );
$addresses[$i]->SetTel1($tel1[$i] );
$addresses[$i]->SetTel2($tel2[$i] );
$addresses[$i]->SetEmail($email[$i] );
}
Gibt es nicht eine elegantere Lösung? Kann ich die Daten auch direkt übergeben mit dem object tag?
Danke und Gruss
Coreblade