Zum Inhalt springen

Mehrere gleiche Models

Erstellt am 11. September 2012 · Noch keine Antworten

Tags: Fluid, Frage

Coreblade ·

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