Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:22.3.2015 7:46

Zdravím. Nejsem v Nette žádný expert (vlastně ani obyčejný uživatel), takže mě poněkud zarazil Nette\Forms. V takové metodě jako je (oficiální dokumentace):

protected function createComponentRegistrationForm(){
        $form = new UI\Form;
        $form->addText('name', 'Jméno:');
        $form->addPassword('password', 'Heslo:');
        $form->addSubmit('login', 'Registrovat');
        $form->onSuccess[] = array($this, 'registrationFormSucceeded');
        return $form;
}

Nejedná se o porušení samotného konceptu MVP? Ty volané metody tam přece nemají co dělat - to má být buď v pohledu komponenty, popřípadě pohledu presenteru, ne? Samozřejmě v HTML tvaru. Jestli se mýlím, mohl by mi to někdo vysvětlit? :)

Odpovědět 22.3.2015 7:46
Avatar
d4rkw34v3r
Člen
Avatar
d4rkw34v3r:22.3.2015 10:26

Touhle továrničkou si vytvoříš pouze komponentu, kterou pak můžeš někde (v šabloně) vykreslit. Jak ji vykreslíš, už záleží na tobě. Tohle je pouze definice formuláře.

 
Nahoru Odpovědět 22.3.2015 10:26
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na d4rkw34v3r
Inoue Yūki:22.3.2015 10:36

Můžu si ty texty definovat až v šabloně?

Nahoru Odpovědět 22.3.2015 10:36
Avatar
d4rkw34v3r
Člen
Avatar
Odpovídá na Inoue Yūki
d4rkw34v3r:22.3.2015 10:42

Těmi texty myslíš Jméno:, Heslo: a Registrovat?

 
Nahoru Odpovědět 22.3.2015 10:42
Avatar
d4rkw34v3r
Člen
Avatar
Odpovídá na Inoue Yūki
d4rkw34v3r:22.3.2015 10:45

Ono takhle, proč bys to psal až v šabloně, když ti tohle vygeneruje HTML kód za tebe? Navíc když tam budeš mít nějakou validaci, tak k tomu máš přidaný i JSON pro javascript.

Pokud chceš psát sám tato pole, můžeš využít low-level formuláře, které jsou popsané v dokumentaci

 
Nahoru Odpovědět 22.3.2015 10:45
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na d4rkw34v3r
Inoue Yūki:22.3.2015 10:49

Mno a tím se dostáváme k otázce této diskuze - není to porušení MVP?

Nahoru Odpovědět 22.3.2015 10:49
Avatar
d4rkw34v3r
Člen
Avatar
Odpovídá na Inoue Yūki
d4rkw34v3r:22.3.2015 10:53

Nevím, co tím přesně myslíš. Však definice a vlastní vykreslení probíhá na odlišných vrstvách.

 
Nahoru Odpovědět 22.3.2015 10:53
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Inoue Yūki
Matúš Petrofčík:22.3.2015 10:55

Ja sa do nette vôbec nevyznám, ale napadla ma jedna otázka trochu mimo túto tému: Jak sa potom doplnaju k formuláru css triedy, alebo modifikuje formulár v šablone keď toto takto vypľuje vygenerovaný formulár? (ak som to správne pochopil)

Nahoru Odpovědět 22.3.2015 10:55
obsah kocky = r^2 ... a preto vlak drnká
Avatar
d4rkw34v3r
Člen
Avatar
Odpovídá na Matúš Petrofčík
d4rkw34v3r:22.3.2015 10:56

Můžeš si napsat vlastní renderer, pokud máš více formulářu, u kterých budeš chtít mít stejné rozložení prvků a nebo využít ručního vykreslení. Jinak css třídy a další věci můžeš doplňovat pomocí metod setHtmlID ( doplní id=""), setAttribute() apod.

Editováno 22.3.2015 10:58
 
Nahoru Odpovědět 22.3.2015 10:56
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na d4rkw34v3r
Matúš Petrofčík:22.3.2015 11:03

Ak s tým pracuješ, nie je podľa teba jednoduchšie napísať si ten formulár rovno do šabony namiesto generatora?

Nahoru Odpovědět 22.3.2015 11:03
obsah kocky = r^2 ... a preto vlak drnká
Avatar
d4rkw34v3r
Člen
Avatar
Odpovídá na Matúš Petrofčík
d4rkw34v3r:22.3.2015 11:09

Nejsem žádnej expert, nicméně si myslím, že je lepší si to nechat vygenerovat, protože stejně většinou potřebuješ doplnit i různý validační pravidla. Formuláře v nette mají rozmanitou sadu vlastních pravidel, se kterými spolupracuje i předpřipravený JS, takže se ti v základu funguje i javascriptová validace, podle pravidel, který sis nadefinoval. Mrkni na seriál na zdrojáku: http://www.zdrojak.cz/…e-formulare/
Je teda hodně starej, ale uvidíš tam alespoň základní info o formulářích

 
Nahoru Odpovědět 22.3.2015 11:09
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět 22.3.2015 11:13
obsah kocky = r^2 ... a preto vlak drnká
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.