Latte n:name textarea a Forms nastavení hodnoty

ronadlisko
Člen | 2
+
0
-

Zdravím všechny. Při vytváření formulářů na svých stránkách jsem zvolil metodu propojení formulářů s existující šablonou, tedy v Latte šablonách používám n:name makra. Když chci přidat do value jednotlivých inputs v šabloně hodnoty, u všech to funguje korektně, až na prvek textarea. Ukázka kódu:

Form:

$form->addText('playerName');
$form->addText('playerBirthNumber');
$form->addTextArea('playerInfo');

Šablona:

<input type="text" n:name=playerName value="{$entries[0]}" required> // v pořádku, hodnota se zobrazí
<input type="text" n:name=playerBirthNumber value="{$entries[3]}"> // v pořádku, hodnota se zobrazí
<textarea n:name=playerInfo rows="3">{$entries[6]}</textarea> // chyba, nezobrazí se žádná hodnota

Nefunguje ani prostý zápis:

<textarea>Cokoliv</textarea>

Po odebrání makra n:name u elementu textarea se předaná či jinak zapsaná hodnota zobrazí a vše funguje. Jde o chybu nebo dělám něco špatně? Našel jsem podobný příspěvek (https://forum.nette.org/…ue-v-sablone), kde vypsání proměnné vyřešili metodou:

$form->setDefaults(['nazev_textarea' => 'vychozi hodnota'])

Já chci ale zapisovat do obsahu textarea zapisovat až v šabloně při předání proměnných z presenteru, stejně jako u ostatních inputs.

Kcko
Člen | 465
+
0
-

Dělej to tak, jak se to dělat má ⇒ Data máš nastavit v Presenteru, určitě ne takhle v šabloně.

Alsatian
Člen | 164
+
+1
-

Ahoj, tady se dozvíš, jak na to:
https://doc.nette.org/…eating-posts

Ruční vykreslení formuláře v šabloně s textarea vypadá nejzákladněji takto (kde editForm je název tvého formuláře):

{form editForm}
	<textarea n:name="mujtext"></textarea>
{/form}

Pokud chceš nastavit velikost (řádky) textarea, udělej to už při vytváření (setAttribute – rows):
->setDefaultValue(‚Lorem ipsum‘) – nastaví výchozí text, pokud chceš
->setAttribute(‚rows‘, 3) – nastaví počet řádků, tedy velikost textarea prvku

$form->addTextArea('mujtext','Text před položkami faktury')
	->setAttribute('rows', 3)
	->setDefaultValue('Výchozí text, pokud není nic zadáno.');

Editoval Alsatian (7. 10. 2018 19:29)

ronadlisko
Člen | 2
+
0
-

Díky za odpovědi a nakopnutí. Ruční vykreslení formuláře mám již správně nastaveno a metody pro přidání řádků a nastavení default hodnoty použiju dle rady již v dané formulářové komponentě, kterou mám injecktnutou do příslušného presenteru. Zatím jsem věci ohledně inputů (validace HTML 5, apod.) řešil přímo v šabloně, stejně jako vykreslení příslušných hodnot přímo z presenteru. Dle vašich rad vše vyřeším již v dané komponentě (továrně) pro uvedený formulář, tedy jak validaci, tak i předání výchozích hodnot.