[PHP/ZF] Dynamisch formulier
Ik zal gelijk even de situatie omschrijven zodat duidelijk is waar de schoen wringt.
Ik heb een formulier om vliegtickets te boeken met diverse velden als aantal volwassenen, kinderen, tarieven, toeslagen, enz enz. Ook bevat de ticket één of meerdere segmenten een segment bestaat uit een vertrekplaats, aankomstplaats en vertrekdatum. Door middel van JS kan een gebruiker extra regels aanmaken en regels verwijderen.
Nieuwe tickets toevoegen zal nog wel gaan, maar bewerken wordt lastig. Als volgt:
In mijn huidige formulier laat ik PHP de segmenten ophalen dmv een statische functie in de ticketController, deze geeft een recordset terug (aan de hand van de opgevraagde ticket). Voor elk record voeg ik een nieuwe regel toe aan het 'subformulier', zodoende wordt elk segment getoond en is deze te bewerken.
In de nieuwe methode, dus OOP icm Zend_Form maak ik gebruik van een viewScript om de zaak te renderen (dit omdat het formulier dermate complex is dat decorators de overzichtelijkheid zouden verslechteren). Dit gaat goed tot het punt van de segmenten.
Even een stukje code uit de losse pols zoals het nu gaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<tr>
<td><input type="text" name="segments[34][flightdate]" value="10-10-2009"></td>
<td><input type="text" name="segments[34][from]" value="Amsterdam"></td>
<td><input type="text" name="segments[34][to]" value="JFK"></td>
</tr>
<tr>
<td><input type="text" name="segments[new][flightdate][]"></td>
<td><input type="text" name="segments[new][from][]"></td>
<td><input type="text" name="segments[new][to][]"></td>
</tr>
<td><input type="text" name="segments[34][flightdate]" value="10-10-2009"></td>
<td><input type="text" name="segments[34][from]" value="Amsterdam"></td>
<td><input type="text" name="segments[34][to]" value="JFK"></td>
</tr>
<tr>
<td><input type="text" name="segments[new][flightdate][]"></td>
<td><input type="text" name="segments[new][from][]"></td>
<td><input type="text" name="segments[new][to][]"></td>
</tr>
De onderste rij wordt net zo vaak aangemaakt als de gebruiker wil dmv JS en wordt door de 'new' key toegevoegd aan de DB. ID's die voorheen bestonden en niet meer zijn gepost worden verwijderd, overige data wordt geupdate. Werkt soepel tot zover.
Ik heb nu echter geen idee hoe ik dit met Zend_Form op kan lossen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class FlightForm extends Zend_Form{
public function __construct(){
parent::__construct();
}
public function addSegment( xxx ){
// Add flightsegment elements
$this->addElement
}
}
[/code]
Ik zie alleen niet hoe ik hier doorheen zou kunnen lopen met een loop oid in het view script.
Heeft iemand een clou?
class FlightForm extends Zend_Form{
public function __construct(){
parent::__construct();
}
public function addSegment( xxx ){
// Add flightsegment elements
$this->addElement
}
}
[/code]
Ik zie alleen niet hoe ik hier doorheen zou kunnen lopen met een loop oid in het view script.
Heeft iemand een clou?
Er zijn nog geen reacties op dit bericht.