Kontejnery ve formuláři | Call to undefined method

Rndoom04
Člen | 72
+
0
-

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 :)

MajklNajt
Člen | 471
+
+1
-

ahoj, zanorené komponenty sa oddeľujú pomlčkou, takže by si to mal generovať takto

<td>{input _name-0}<td>
<td>{input _name-1}<td>
<td>{input _name-2}<td>
duke
Člen | 650
+
+1
-

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]).

Rndoom04
Člen | 72
+
0
-

Ahoj :)

Taková hloupá chyba a já nad tím strávím několik hodin -_- Njn, začátky jsou nejhorší.

Děkuju moc! :)