Je od nové verze vyžadována render() metoda u formuláře jako komponenty?
- Jigs
- Člen | 14
Ahoj, narazil jsem na tento best practise: https://doc.nette.org/…s/form-reuse
Bohužel jsem se po naimplementování dostal exception, že nemám naimplementovanou render() metodu. Vím, že obecně v komponentách render metoda být musí, ale u formuláře potřeba nikdy nebyla. Je to jen chyba tohoto článku nebo dělám já něco špatně? Případně sem můžu hodit kód.
Martin
- David Matějka
- Moderator | 6445
v nove verzi se nic nemenilo, pokud komponentu s formularem vykreslujes primo, tak byla render metoda potreba vzdy. muze bud vypadat jen nasledovne:
public function render()
{
$this['form']->render();
}
nebo v ni vykreslit latte sablonu, ve ktere bude
{control form}
dalsi moznosti je primo v sablone presenteru vykreslovat formular, nikoliv
wrapper komponentu pomoci {control articleForm-form}
- Jigs
- Člen | 14
Díky za konstruktivní odpověď. Jedná se tedy o chybu ve článku nebo se tak trochu očekává, že to čtenář prostě ví?
Druhý postup – {control form}
v latte šabloně. Abych toto
mohl použít, tak je potřeba stejně tu render metodu v komponentě
vytvořit, abych tu šablonu mohl nastavit, nebo ne?
Každopádně děkuji za odpověď!
- David Matějka
- Moderator | 6445
Jedná se tedy o chybu ve článku nebo se tak trochu očekává, že to čtenář prostě ví?
jj, presne tak
Abych toto mohl použít, tak je potřeba stejně tu render metodu v komponentě vytvořit, abych tu šablonu mohl nastavit, nebo ne?
jj, render metodu budes muset i tak vytvorit
- Šaman
- Člen | 2666
Za sebe doporučuji nepoužívat obalovací komponentu okolo formuláře,
pokud k tomu nemáš dobrý důvod (třeba speciální šablonu a
renderování, které by nezvládal renderer).
S formulářem se pracuje lépe třeba i v action metodách, kde nastavuješ
defautlní data. S komponentou to sice taky lze, ale je to zbytečná
mezivrstva (pokud právě tu mezivrstvu z nějakého důvodu
nepotřebuješ).
A druhý postřeh – pokud používáš obalovací komponentu, dej do
názvu, že je to komponenta ArticleFormControl
. Protože jinak je
WTF přemýšlet, proč ten formulář ArticleForm
nezná metody
pro práci s formulářem (protože to není formulář).
Editoval Šaman (11. 7. 2018 13:32)