11. 09. 2012, 11:28

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.

  1. <f:form action="update" name="club">
  2. <f:for each="{addresses}" as="address" key="count">
  3. <div class="wrapper">
  4. <h2><f:translate key="tx_isclubmanager.addresstyp.{address.typ}" /></h2>
  5. <div class="tx_col1">
  6. <div class="tx_label"><label><f:translate key="tx_isclubmanager.vorname" /> <span class="required">*</span></label></div>
  7. <div class="tx_input"><f:form.textfield name="Vorname[]" value="{address.vorname}" /></div>
  8. <div class="tx_label"><label><f:translate key="tx_isclubmanager.name" /> <span class="required">*</span></label></div>
  9. <div class="tx_input"><f:form.textfield name="Name[]" value="{address.name}" /></div>
  10. <div class="tx_label"><label><f:translate key="tx_isclubmanager.street" /> <span class="required">*</span></label></div>
  11. <div class="tx_input"><f:form.textfield name="Street[]" value="{address.street}" /></div>
  12. <div class="tx_label"><label><f:translate key="tx_isclubmanager.plz" /> / <f:translate key="tx_isclubmanager.place" /> <span class="required">*</span></label></div>
  13. <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>
  14. </div>
  15. <div class="tx_col2">
  16. <div class="tx_label">
  17. <label><f:translate key="tx_isclubmanager.tel1" /> <span class="required">*</span></label></div>
  18. <div class="tx_input"><f:form.textfield name="Tel1[]" value="{address.tel1}" /></div>
  19. <div class="tx_label">
  20. <label><f:translate key="tx_isclubmanager.tel2" /></label></div>
  21. <div class="tx_input"><f:form.textfield name="Tel2[]" value="{address.tel2}" /></div>
  22. <div class="tx_label"><label><f:translate key="tx_isclubmanager.email" /> <span class="required">*</span></label></div>
  23. <div class="tx_input"><f:form.textfield name="Email[]" value="{address.email}" /></div>
  24. </div>
  25. <f:form.hidden name="addresstyp" value="{address.typ}" />
  26. <hr class="dividerBlue" />
  27. </div>
  28. </f:if>
  29. </f:for>
  30. </f:form>

Im Controller lese ich dann die Arrays einzeln aus und speichere die Änderungen:

  1. $club = $this->clubRepository->findByUid(1);
  2. $addresses = $club->getAddresses();
  3.  
  4. $vorname = $this->request->getArgument("Vorname" );
  5. $name = $this->request->getArgument("Name" );
  6. $street = $this->request->getArgument("Street" );
  7. $plz = $this->request->getArgument("PLZ" );
  8. $place = $this->request->getArgument("Place" );
  9. $tel1 = $this->request->getArgument("Tel1" );
  10. $tel2 = $this->request->getArgument("Tel2" );
  11. $email = $this->request->getArgument("Email" );
  12.  
  13. for ($i = 0; $i <= 3; $i++) {
  14. $addresses[$i]->SetVorname($vorname[$i] );
  15. $addresses[$i]->SetName($name[$i] );
  16. $addresses[$i]->SetStreet($street[$i] );
  17. $addresses[$i]->SetPlz($plz[$i] );
  18. $addresses[$i]->SetPlace($place[$i] );
  19. $addresses[$i]->SetTel1($tel1[$i] );
  20. $addresses[$i]->SetTel2($tel2[$i] );
  21. $addresses[$i]->SetEmail($email[$i] );
  22. }

Gibt es nicht eine elegantere Lösung? Kann ich die Daten auch direkt übergeben mit dem object tag?

Danke und Gruss
Coreblade