Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Pavel Nesnídal:21. listopadu 19:50

Ahoj,
mám emailový formulář v Nette, který odesílám přes ajax. Ale mám problém v tom, že vůbec nefunguje do doby, kdy přidám nette.form.js, ale jakmile přidám nette.forms.js začnou se vypisovat errrory do vyskakovacích oken, ale já je potřebuji vypisovat klasickou cestou do odstavce jako text za formulář. Když je nette.forms.js tak celý ajax funguje a formulář se i odešle a všechno je v poho, ale errory to prostě vypisuje blbou cestou.

Zkusil jsem: Do doby než jsem používal ajax jsem měl na formuláři novalidate, ale jakmile přidám ajax a nette.forms.js tak vůbec nic.

Už jsem našel toto řešení pri initu

$(function () {
    Nette={};
    $.nette.init();
});

ale u tohoto řešení sice přestane vyhazovat vyskakovací okna, ale nevypisuje ani errrory klasickou cestou do textu za formulář. Toto řešení dokonce umožnožní odebrat nette.forms.js ale prostě to ty errory nevypíše, přitom tam být musí, protože to je na povinná pole.

Chci docílit: Potřebuji vypisovat errory klasickou cestou a né přes vyskakovací okna.

 
Odpovědět 21. listopadu 19:50
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Pavel Nesnídal
Jindřich Máca:22. listopadu 20:58

Ahoj, tak nejdřív pro pořádek. Pro AJAX v Nette Ti stačí mít pouze jQuery, nette.ajax.js, u daného formuláře class="ajax" a ten init skript, co jsi sem posílal.

Knihovnu nette.forms.js do toho tahat vůbec nemusíš pokud ji nepotřebuješ. Všechno je to pak popsané v dokumentaci té knihovny nette.ajax.js - https://componette.com/…tte.ajax.js/

P.S.: Není to jediná knihovna pro AJAX v Nette, na výběr máš hned z několika viz. úvodní poznámka na https://doc.nette.org/cs/2.4/ajax

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 22. listopadu 20:58
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Pavel Nesnídal
Jindřich Máca:22. listopadu 21:09

Teď co se týče toho chování při odeslání formuláře. Nejdříve trocha teorie. Předpokládám, že při použití výše zmíněné knihovny jsi se vydal cestou server renderingu (snippetů v Nette). V podstatě ta JS knihovna zajistí, že se ten formulář na server dostane místo běžného odeslání právě pomocí AJAX a následně také, že to co jí server odpoví, vloží někam do stránky. To ale znamená, že za veškeré vykreslování, včetně např. výpisu těch chyb, jsi od teď zodpovědný Ty v PHP na straně serveru! :-`

Tady je trochu potřeba změnit přístup, protože když např. nastane chyba v tom formuláři, musíš explicitně říct, co a kam se má vykreslit/pře­kreslit. A to mě přivádí zpátky k těm snippetům. Pokud jsi s tím ještě moc nepracoval, doporučuji nejdříve nastudovat dokumentaci. Jestliže jsi s tím obeznámen, tak už se jenom zeptám, jak vypadá Tvůj PHP kód akce při úspěšném odeslání formuláře pomocí AJAX a jak vypadá Tvůj kód při chybném odeslání formuláře pomocí AJAX? :)

Pokud je tam někde chyba, tak bez kódu to vypátráme jenom těžko. ;)

 
Nahoru Odpovědět  +1 22. listopadu 21:09
Avatar
Odpovídá na Pavel Nesnídal
Martin Konečný (pavelco1998):22. listopadu 21:16

Ahoj,

řešení tohoto by nemělo být složité - všimni si metody Nette.showFor­mErrors():
https://github.com/…etteForms.js#L285

tu si můžeš přepsat podle sebe a napojit si vlastní vypisování chyb.

Nahoru Odpovědět 22. listopadu 21:16
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
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 4 zpráv z 4.