Vyvolání Alert v metodě presenteru

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

Ahoj,

v prezneteru mam handler, který volá metodu z modelu. Podle toho co metoda vrátí se buď přesměruje stránka nebo bych chtěl aby se zobrazila chybová hláška.

Když jí vyvolam takto:

<?php

echo „<script language=javascript>alert(‚kuuk‘)</script>“;

?>

tak se sice zobrazí, ale jakoby v novém okně. Chtěl bych aby se zobrazila jako když se validují formuláře, tzn. obsah stránky zůstane + se zobrází ten alert. Díky moc za rady.

srigi
Nette Blogger | 558
+
0
-

Pouzi predsa flashmessages

$this->flashMessage('hlaska', 'classa_flash_divu');
$this->redirect('default');
Popik
Člen | 30
+
0
-

Nechci to používat. Nelíbí se mi to. Mě vyhovuje to co dělají formuláře.

marek.dusek
Člen | 99
+
0
-

Jestli tim „co delaji formulare“ myslis validaci v realnem case javascriptem, bez refreshe stranky, jde to udelat tak, ze formular odesles ajaxem (je na to tusim komponenta v extras, nebo uz je to primo v nette core?), udelas akci a pri chybe vratis pouze flash message (prip. je mozne pouzit form error), cizm se ti prekresli pouze ta.

A jestli nerozumis, co jsem prave napsal, projdi si znovu tutorialy :-)

odin
Člen | 50
+
0
-

Popik napsal(a):
echo „<script language=javascript>alert(‚kuuk‘)</script>“;

No tak kazdopadne bys to mel vypsat pres sablonu, takze v presenteru po odeslani formualare si to ulozis do

<?php
	$this->template->error = "kuuk"
?>

a v sablone to pak vypises

<?php
<script type='text/javascript'>alert({$error})</script>
?>
Popik
Člen | 30
+
0
-

Díky moc, takhle to celkem funguje.

Mám to takto:

Vytvořil jsme si ve třídě presenteru proměnnou

<?php

public $error = "0"

?>

V handleru mám:

<?php

public function handleRemoveUser($id) {

              $this->error="kuuk";
    }

?>

V render mám:

<?php

public function renderDefault() {

        $this->template->error = $this->error;


    }

?>

V šabloně toto:

<?php

{if $error=="kuuk"}
<script type="text/javascript">alert({$error})</script>
{/if}

?>

Funguje to dobře akorát se chci zeptat zda nevadí, že v tom handleru chybí redirect. Někde jsem četl že by se vždycky měl použít. Když ho použiju tak se samozřejmě nic nezobrazí jelikož proměnná $error se zase inicializuje na výchozí hodnotu 0.

Díky za připomínky.

EDIT: Tak koukám že to vadí kvůli znovunačtení a asi tedy i pokud se na tu stránku dostanu pomocí před/zpět. Ale tak jedná se pouze o zobrazení chyby, tak to zatím nebudu řešit. Díky za radu.

Editoval Popik (22. 7. 2010 19:25)

Aurielle
Člen | 1281
+
0
-

A proč se bráníš použití flash messages?

Popik
Člen | 30
+
0
-

Protože se mi to nelíbí a hlavně chci aby to všechno bylo konzistentní a ne aby půlka věcí volala alert a druhá půlka flashmessage.

nAS
Člen | 277
+
0
-

A proč teda nevypisuješ ty flashmessages v šabloně jako js alerty?

Popik
Člen | 30
+
0
-

To zní zajímavě :-) Ale jak?

Ola
Člen | 385
+
0
-

a co uživatelé s vypnutým javascriptem?

nAS
Člen | 277
+
0
-

Popik napsal(a):

To zní zajímavě :-) Ale jak?

No stejně jako vypisuješ flashmessages, tak je budeš vypisovat v šabloně do js kódu který vyhazuje alert.

Ola napsal(a):

a co uživatelé s vypnutým javascriptem?

A ještě to bude strašně otravné, že bude muset uživatel pokaždé klikat na to okno. Mě to přijde také jako pitomost, ale proti gustu…

Aurielle
Člen | 1281
+
0
-

Popik napsal(a):

To zní zajímavě :-) Ale jak?

{if $flashes}
{foreach $flashes as $flash}
<script type="text/javascript">
alert({$flash->message});
</script>
{/foreach}
{/if}

Ale jak říkají ostatní i já, je to pitomost…

Popik
Člen | 30
+
0
-

Díky za pomoc. Není to pitomost. Například budete chtít přidat do seznamu uživatelů dalšího uživatele, ale použijete login, který již existuje. Mě příde lepší tuto chybu zobrazot pomocí alert. Formuláře to taky dělají.

Mikulas Dite
Člen | 756
+
0
-

Alert je naprosto proti uživateli, který mnohem radši snese nekonzistentní vzhled formulář / flashmessage. Každopádně to, co vyplivne form je taky na tobě; ani tam nemusíš mít alert box, ale něco hezčího.

Popik
Člen | 30
+
0
-

Jedná se o administrační část webu. Alert mi prostě připadá vhodnější.