Nefunkční flash message v layoutu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- bluray
- Člen | 178
Dobrý den, mám v layout.latte
<div n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div>
problém je, že se flash zprávy nezobrazují. ale když dám kod do default.latte tak to funguje. ale rád bych to měl v layoutu abych to nemusel psát do každé šablony. díky
- Tomáš Votruba
- Moderator | 1114
@bluray Hoď sem minimální kód @layout.latte
a
default.latte
, na kterém lze chybu reprodukovat.
Editoval Tomáš Votruba (11. 7. 2014 16:09)
- bluray
- Člen | 178
layout:
{**
* @param string $basePath web base path
* @param array $flashes flash messages
*}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{ifset #title}{include title|striptags} | TODO nazev{/ifset}</title>
<link rel="stylesheet" media="screen,projection,tv" href="{$basePath}/css/admin.css">
<link rel="shortcut icon" href="{$basePath}/favicon.ico">
{block head}{/block}
</head>
<body>
<script> document.documentElement.className += ' js'</script>
{include header.latte}
<div id="container">
<!--Flash hlášení-->
<div n:foreach="$flashes as $flash" class="msg msg-{$flash->type}">
<p><strong>{$flash->message}!</strong></p>
</div>
<br />
<!--Content-->
<div id="content">
{include content}
</div>
</div>
{include footer.latte}
{block scripts}
<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/main.js"></script>
{/block}
</body>
</html>
default.latte:
<h2>Kategorie</h2>
{form addCategoryForm}
<div n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div> --tady to funguje
<div class="msg msg-error" n:if="$form->ownErrors">
<p n:foreach="$form->ownErrors as $error">{$error}</p>
</div>
<table class="table1">
<tr>
<td>{label nazev /}</td>
<td>{input nazev class => 'field'}</td>
</tr>
<tr>
<td></td>
<td>{input send class=>'button'}</td>
</tr>
</table>
{/form}
presenter:
protected function createComponentAddCategoryForm(){
$form = new UI\Form();
$form->addText("nazev", "Název")->setRequired("Nezadal jsi název kategorie");
$form->addSubmit("send", "Vytvořit");
$form->onSuccess[] = $this->addCategoryFormSucceeded;
return $form;
}
public function addCategoryFormSucceeded($form, $values){
try{
if($this->category->save($values->nazev))
{
$this->flashMessage("Kategorie byla úspěšně vytvořena");
$this->redirect("this");
}
} catch (\Exception $ex) {
$form->addError($ex->getMessage());
}
}
Mám ještě jeden problém. když uložení proběhne bez problému, pořád se mi zobrazuje v šabloně tenhle div, ale bez textu:
<div class="msg msg-error" n:if="$form->ownErrors">
<p n:foreach="$form->ownErrors as $error">{$error}</p>
</div>
Díky
Editoval bluray (10. 7. 2014 23:20)