Kontejnery ve formuláři | Call to undefined method
- Rndoom04
- Člen | 75
Zdravím všechny.. :)
Druhý den řeším jeden takový problém, pro vás hračka. Potřebuji vyřešit něco jako:
<input type="text" name="_name['0']">
<input type="text" name="_name['1']">
<input type="text" name="_name['2']">
V presenteru mám:
protected function createComponentJidelniListekForm()
{
$form = new UI\Form;
$containerDays = $form->addContainer('_name');
for($i=0;$i<5;$i++) {
$containerDays->addText($i,"Den:");
}
$form->addSubmit('send', 'Odeslat')
->setAttribute("class","btn btn-info");
$form->onSuccess[] = function(\Nette\Application\UI\Form $form) {
$values = $form->getValues();
if (!empty($values)) {
} else {
$this->flashMessage('Jídelní lístek nebyl uložen do databáze. Nebyl korektně odeslán formulář.',"danger");
}
};
return $form;
}
a v latte ho zkouším vypsat tímto způsobem:
{form jidelniListekForm}
<ul class="errors" n:if="$form->hasErrors()">
<li n:foreach="$form->errors as $error">{$error}</li>
</ul>
<table>
<tr>
<td>{input _name:0}<td>
<td>{input _name:1}<td>
<td>{input _name:2}<td>
</tr>
</table>
{/form}
.. samozřejmě je to zjednodušeně, budu tam mít použitý cyklus.
Avšak Tracy mi vrací chybu „Call to undefined method Nette\Forms\Container::getControlPart(), did you mean getControls()?“ – viz screen (https://imgur.com/v0ELxIe)
Vůbec si nevím rady, jak tento problém vyřešit. Uměl by tu někdo poradit? :)
Děkuji a přeji hezký zbytek dne :)
- duke
- Člen | 650
Rovněž je možné použít makro {formContainer}:
{formContainerr _name}
<td>{input 0}</td>
<td>{input 1}</td>
<td>{input 2}</td>
{/formContainer}
… jen si nejsem jist, zda jména inputů mohou být prostá čísla, ale snad ano. Já bych nejspíš použil něco jako:
{formContainer days}
{foreach $days as $day}
{formContainer $day}
<td>{input name}</td>
{/formContainer}
{/foreach}
{/formContainer}
(tj. měl bych inputy se jmény: days[0][name], days[1][name], atd.)
Hodí se to zejména v případě, že bych chtěl přidat další inputy pro
každý den (např. cenu, tj. days[0][price]).