Ajax flashmessage ve formuláři
- Томас
- Člen | 85
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
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)