Foreach ve formuláři a získání hodnot
- Draffix
- Člen | 146
Zdravím, narazil jsem na jeden menší problém a potřeboval bych poradit. Mám seznam produktů v objednávce, které vypisuji:
{foreach $orderEditProducts as $o}
<tr>
<td><strong>{$o->prod_name}</strong></td>
<td><input n:input="quantity" class="input-mini" type="number" value="{$o->quantity}"></td>
<td style="text-align: right;"><a class="btn" n:href="removeProductIntoOrder! $o->prod_id, $order->ord_id"><i class="icon-trash"></i> Odebrat</a></td>
</tr>
{/foreach}
Jedná se ale o formulář, ve kterém je možné upravit množství. Když má ale někdo v objednávce více produktů, tak jak mám získat to zadané množství (od každého produktu)? Dopředu nevím kolik těch produktů bude. A také nevím jak to předat do presenteru pro zpracování. Pro jeden produkt vím, to není problém, ale u dynamického počtu produktů už nevím, jde to nějak vyřešit?
- vvoody
- Člen | 910
Každý riadok by mal byť samostatný formulár. Dynamický počet takých istých formulárov zabezpečí multiplier
- JakubTN
- Bronze Partner | 49
V presenteri si vytvoris ten formular na zmenu mnozstva a v nom mat nieco taketo
$form = new Form();
//...
$quantity = $form->addContainer('quantity');
foreach($orderEditProducts as $key=>$value)
{
$quantity->addText($key)
->setType('number');
}
//...
V sablone potom
{form quantityForm}
{foreach $orderEditProducts as $o}
<tr>
<td><strong>{$o->prod_name}</strong></td>
<td>{$form['quantity'][$o->id]->getControl()}</td>
<td style="text-align: right;"><a class="btn" n:href="removeProductIntoOrder! $o->prod_id, $order->ord_id"><i class="icon-trash"></i> Odebrat</a></td>
</tr>
{/foreach}
{/form quantityForm}
Editoval JakubTN (16. 1. 2013 22:05)
- Draffix
- Člen | 146
@vvoody Jenže je problém, že já to já to tak nemůžu udělat. Dělám s Twitter Bootstrap a protože je to v modálním okně, tak to musím obalit celé:
{form editProductIntoOrderForm}
<div id="items-form-modal" class="modal hide">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Upravit položky objednávky</h3>
</div>
<div class="modal-body">
<table class="table order-table">
<thead>
<tr>
<td style="border-bottom: 1px solid #ddd;" width="250px"><strong>Název</strong></td>
<td style="border-bottom: 1px solid #ddd;"><strong>Množství</strong></td>
<td style="border-bottom: 1px solid #ddd;"><strong></strong></td>
</tr>
</thead>
<tbody>
{foreach $orderEditProducts as $o}
<tr>
<td><strong>{$o->prod_name}</strong></td>
<td><input n:input="quantity" class="input-mini" type="number" value="{$o->quantity}"></td>
<td style="text-align: right;"><a class="btn" n:href="removeProductIntoOrder! $o->prod_id, $order->ord_id"><i class="icon-trash"></i> Odebrat</a></td>
</tr>
{/foreach}
</tbody>
</table>
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-primary btn-large" value="Uložit">
<a href="#" class="btn" data-dismiss="modal">Storno</a>
</div>
</div>
{/form}
Editoval Draffix (16. 1. 2013 22:08)
- Draffix
- Člen | 146
@JakubTN Super, díky moc! Upravil jsem továrničku takto a funguje to
public function createComponentEditProductIntoOrderForm() {
$form = new UI\Form();
$quantity = $form->addContainer('quantity');
foreach ($this->order->fetchAllOrdersWithID($this->getParameter('id')) as $val) {
$quantity->addText($val->prod_id)
->setType('number')
->setAttribute('class', 'input-mini')
->setValue($val->quantity);
}
$form->onSuccess[] = callback($this, 'editProductIntoOrderFormSubmitted');
return $form;
}