Ajax flashmessage ve formuláři

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Томас
Člen | 85
+
0
-

Dobrý den přeju,

už dělám v Nette nějaký ten pátek, ale nikdy jsem nevyřešil jednu věc a to je přiřazení flashové zprávy k nějakému formuláři. Vysvětlím Vám jednoduše co potřebuji.

Mám formulář, který ajaxově odesílám a vyhodnocuji a podle toho vypíšu flashovou zprávu. Nicméně chci, aby když odešlu formulář, tak se nad formulářem objevila bublina s textem (ta flashka) něco jako „super, díky za zprávu“ a zase zmizla…

Teď to řeším tímhle „způsobem“

Success event formuláře:

$this->presenter->template->contact_message = "Vaše zpráva byla úspěšně odeslána, děkujeme. <i class='fa fa-heart' style='color:red;'></i>";
                $this->redrawControl("contact_form_snipper");

Snippet nad formulářem:

{snippet contact_form_snipper}
                        {if isset($contact_message)}
                            <div class="form_status alert alert-success" id="msg_alert_msg" style="display:none;">
                                <p>{$contact_message|noescape}</p>
                            </div>
                            <script>
                                $("#contact_form_name").val("");
                                $("#contact_form_email").val("");
                                $("#message").val("");

                                $("#msg_alert_msg").fadeIn();
                                $("#msg_alert_msg").delay(3000).fadeOut();
                            </script>
                        {/if}
                    {/snippet}

To mi úplně nepříjde, jako nejlepší řešení. Nemáte někdo něco lepšího? Dost mi to kazí kód :-( :-D

Díky! :-)

GEpic
Člen | 566
+
0
-

Flashovat zprávy může vše, co dědí od Nette\Application\UI\Control . Čili pokud svůj formulář vložíš do komponenty, tak ta bude moci flashovat. Stačí k té komponentě přiřadit vlastní 'latte'čko a vypsat proměnnou $flashes

Editoval GEpic (10. 9. 2016 17:24)