invalidace řádku addDynamic

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
phoniq
Člen | 17
+
0
-

Ahoj, potřeboval bych docílit invalidace řádku přidávaného pomocí Replicatoru metodou AddDynamic. Jde mi o to, že když změním hodnoty v políčku množství, tak potřebuji vypočítat a následně vyplnit ostatní políčka na řádku <tr n:snippet=„zboziItem-$id“/>

presenter:

protected function createComponentProdejForm() {
        $form = new Nette\Application\UI\Form;

        $form->addSelect('sklady_id', 'Sklady:', $sklady)
                ->setDefaultValue(1)
                ->setRequired('Vyberte sklad');

        $zbozi = $form->addDynamic('zboziItem', function (Container $zboziItem) use ($invalidateCallback, $zboziRows, $baleniRows) {
            $zboziItem->addSelect('zbozi_id', 'Zboží:', $zboziRows)
                    ->setAttribute('class', 'ajax')
                    ->setRequired('Vyberte zboží')
                    ->setPrompt('Vyberte zboží')
                    ->setAttribute('onchange', 'zmena(this)');

            $zboziItem->addText('mnozstvi', 'Množství:', 4, 4)
                    ->setAttribute('class', 'ajax')
                    ->setType('number')
                    ->addRule(Form::MIN, "Zadaná hodnota musí být větší než nula!", 1)
                    ->setAttribute('onchange', 'zmena(this)');

            $zboziItem->addText('cenaMJ', 'CenaZaMJ:', 7)
                    ->setDisabled();
            $zboziItem->addText('dph', 'DPH:', 7)
                    ->setDisabled();
            $zboziItem->addText('celkemSDPH', 'Celkem s DPH:', 10)
                    ->setDisabled();

            $zboziItem->addSubmit('remove', '-')
                    ->addRemoveOnClick();
            $zboziItem->addSubmit('add', '+')
                    ->addCreateOnClick();
        }, 1);

        $form->addSubmit('send', 'Uložit')
                ->setAttribute('class', 'btn btn-lg btn-primary btn-block');

        $form->onSuccess[] = array($this, 'prodejFormSucceeded');

        return $form;
    }

template:

{snippet prodejForm}
{form prodejForm}
<div class="row">
	{label sklady_id /}{input sklady_id}
</div>

<div class="row">
	<table class="table">
		<tr class="active">
			<th class="text-right">Zboží</th>
			<th class="text-right">Množství</th>
			<th class="text-right">Cena za MJ</th>
			<th class="text-right">DPH</th>
			<th class="text-right">Celkem s DPH</th>
			<th class="text-right"></th>
		</tr>
		<tr n:snippet="zboziItem-$id" n:foreach="$form['zboziItem']->containers as $id => $zboziItem">
			<td class="text-right">{input $zboziItem['zbozi_id']}</td>
			<td class="text-right">{input $zboziItem['mnozstvi']}</td>
			<td class="text-right">{input $zboziItem['cenaMJ']}</td>
			<td class="text-right">{input $zboziItem['dph']}</td>
			<td class="text-right">{input $zboziItem['celkemSDPH']}</td>
			<td class="text-right">
				{input $zboziItem['remove']} {input $zboziItem['add']}
			</td>
		</tr>
	</table>
</div>

{input send}
{/form}
{/snippet}

Editoval phoniq (12. 1. 2016 7:45)