Nezobrazují se flash zprávy

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

Zdravím,
setkal jsem se se zajímavou chybkou.
Po odeslání emailu a přesměrování se nezobrazí flashMessage (forum jsem pročítal a nic nezebaralo, konstruktor nikde nepřepisuji ani nic podobného). Bez přesměrování s zpráva vypíše.
Používám nejnovější nette.

<?php
 private function sendMail($values) {
        $body = "
                <table border='1' bordercolor='#FFCC00' style='background-color:#FFFFCC' width='100%' cellpadding='3' cellspacing='3'>
                <tr>
                    <td>Jméno a příjmení:</td>
                    <td>$values[name] $values[surname]</td>
                </tr>

                <tr>
                    <td>Email:</td>
                    <td>$values[email]</td>
                </tr>
                <tr>
                    <td>Poptávka:</td>
                    <td>$values[message]</td>
                </tr>
            </table>
            ";

        $mail = new Message;
        $mail->setFrom('...')
            ->addTo('...')
            ->setSubject('Nezávazná poptávka')
            ->setHTMLBody($body)
            ->send();
    }

    public function contactFormSubmitted($form) {
        try {
            $this->flashMessage('Děkujeme, Vaše poptávka byla odeslána, budeme Vás kontaktovat.', 'success');
            $this->sendMail($form->values);
            $this->redirect('this');

        } catch (\Nette\InvalidStateException $e) {
                $form->addError('Nepodařilo se odeslat e-mail, zkuste to prosím za chvíli.');
        }
    }
?>

Editoval demonic (7. 2. 2013 14:26)

Šaman
Člen | 2666
+
0
-

Zkoušel jsi tu flashmessage nastavit až těsně před redirectem?

demonic
Člen | 19
+
0
-

Ano zkoušel, výsledek je stejný. Fakt záhada.

enumag
Člen | 2118
+
0
-

To je fakt divný. Ověř že v šabloně flash zprávy opravdu vypisuješ a v debugbaru si projdi session zda tam ta flash zpráva je.

EDIT: Nebude to tím že na stránce odkud redirectuješ flash zprávy vypisuješ, ale na cílové ne? Jen hádám…

Editoval enumag (7. 2. 2013 19:27)

vvoody
Člen | 910
+
0
-

Máš po redirecte na konci url taký záhadný parameter? :D

demonic
Člen | 19
+
0
-

Jo je tam nějaký parametr, projdu ty session, ale je to hodně divný, skoro mám pocit, že to způsobuje to odeslání emailu.

demonic
Člen | 19
+
0
-

ad enumag: zprávy vypisuju v layoutu takže by to mělo fungovat.

<?php <div id=„content“>
<div n:foreach=„$flashes as $flash“ class=„flash {$flash->type}“>{$flash->message}</div>
{include #content}
 </div>

?>

enumag
Člen | 2118
+
0
-

Vypíše se hláška po redirectu pokud zakomentuješ to odeslání mejlu?

demonic
Člen | 19
+
0
-

Zakomentoval jsem to a ani tak se to nevypíše, jen když zakomentuji ten redirect…

enumag
Člen | 2118
+
0
-

To je fakt prapodivný. Seš si jistej že nepoužíváš jiný layout který v sobě to vypisování zpráv nemá? Kontrolovals tu session v debug baru?

Majkl578
Moderator | 1364
+
0
-

Fungují ti správně sessions / nemáš vyplé cookies?

Šaman
Člen | 2666
+
0
-

Já ještě nechápu, jak se ti může něco vypsat když zakomentuješ redirect. Skoro to vypadá, že se ti to z nějakého důvodu redirectuje samo a tímto se to stane dvakrát a podruhé už bez _fid v adrese.

Majkl578
Moderator | 1364
+
0
-

Šaman napsal(a):

Já ještě nechápu, jak se ti může něco vypsat když zakomentuješ redirect. Skoro to vypadá, že se ti to z nějakého důvodu redirectuje samo a tímto se to stane dvakrát a podruhé už bez _fid v adrese.

Poměrně jednoduše, flash zprávička se nastaví a následně se ihned použije, zkus si to. :)

demonic
Člen | 19
+
0
-

Problém stále nevyřešen, opravdu netuším čím to je.

jasir
Člen | 746
+
+1
-

Voláš $this->flashMessage() v komponentě, nebo v presenteru? Protože jestli v komponentě, flash message se uloží v komponentě a ty asi nevypisuješ. Zkus nahradit za $this->presenter->flashMessage(...)

tk
Člen | 6
+
0
-

Teď jsem řešil stejný problém.
Chyba byla, že jsem volal $this->template->... v konstruktoru presenteru.
Po přesunutí do startup() vše funguje, jak má.

greeny
Člen | 405
+
0
-

Řeším stejný problém – po odeslání formuláře je v kódu flashMessage, hned potom redirect – flashMessage se nezobrazí.

Funguje to pouze když už předtím flashMessage existuje – když ve startupu vypisuju nějakou flashMessage, pak se zobrazí.

?_fid= tam mám, v session jsou ty zprávy jen když se vypisujou – chyba bude buď někde v Nette nebo v kódu.