Flash message
- jasir
- Člen | 746
Můžeš použít druhý parametr metody flashMessage
–
type :
<?php
$this->flashMessage('Nastala chyba','error');
?>
A v šabloně můžeš mít:
<div n:if="count($flashes)>0" id="flashmessages">
<div n:foreach="$flashes as $flash"
class='flashmessage {$flash->type}'>{$flash->message}
</div>
</div>
- Ondřej Brejla
- Člen | 746
Jinak napsáno:
{if count($flashes) > 0}
<div id="flashmessages">
{foreach $flashes as $flash}
<div class='flashmessage {$flash->type}'>
{$flash->message}
</div>
{/foreach}
</div>
{/if}
Editoval Warden (31. 8. 2009 16:42)
- radvis
- Začátečník | 110
Díky, už mi to funguje, ale když to chci udělat jak napsal „jasir“ tj:
<div n:if="count($flashes)>0" id="flashovaZprava">
<div n:foreach="$flashes as $flash" class='flashovaZprava{$flash->type}'>
{$flash->message}
</div>
</div>
tak mi to hodí chyby:
„Notice: Undefined variable: flash in
C:\wamp\www\neco.cz\app\temp\cache-Nette.Template%00d056c91dc0015cce7911f5c90b2c76371.%40layout.phtml.php
on line 109“ a
„Notice: Trying to get property of non-object in
C:\wamp\www\ukaztalent.cz\app\temp\cache-Nette.Template%00d056c91dc0015cce7911f5c90b2c76371.%40layout.phtml.php
on line 109“
neví prosím někdo čím to je?
Editoval radvis (31. 8. 2009 20:12)
- radvis
- Začátečník | 110
Jak udělám upgrade? Bohužel v s nette nemám moc zkušeností.
<div n:if="count($flashes)>0" id="flashovaZprava">
<div n:foreach="$flashes as $flash" class='flashovaZprava<?php echo TemplateHelpers::escapeHtml($flash->type) ?>'>
<?php echo TemplateHelpers::escapeHtml($flash->message) ?>
</div>
</div>
<?php echo $template->subTemplate($content)->__toString(TRUE) ?>
- jasir
- Člen | 746
Teď je to jasné, máš starou verzi, která „n:“ syntax neumožňuje – jak vidíš, nepřekompilovalo se to do php kódu. Takže si ji stáhni z sekce download – Nightly build je nejnovější vývojová verze, nebo můžeš zkusit tu doporučovanou, ale nejsem si jistý, jak vlastně vzniká, sám používám stále tu nejnovější.
A nebo počkej, až David překlopí oficiálně novou verzi a používej standartní { } syntax.
- radvis
- Začátečník | 110
Vše jsem udělal a hází mi to chybu:
"**Warning: Unexpected character in input: ‚\‘ (ASCII=92) state=1 in C:\wamp\www\neco.cz – Kopie\libs\Nette\loader.php on line 23
Parse error: syntax error, unexpected T_STRING in C:\wamp\www\neco.cz – Kopie\libs\Nette\loader.php on line 23**"
- radvis
- Začátečník | 110
pošlu ti jen vrchní část mám tam toho celkem dost;)
require_once LIBS_DIR . '/Nette/loader.php';
//Autoload
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
//Config load
Environment::loadConfig();
//Autentizace
require_once APP_DIR . '/models/Authenticator.php';
- jasir
- Člen | 746
Nevím. Zkus to odkrokovat. Bude to nějaká blbost.
Jo, ještě mě napadlo, zkus si hodit do config.ini
(sekce
common)
Edit: timhle to nebude, tak se na to vyprdni.
service.Nette-Loaders-RobotLoader.run = TRUE
a bootstrap.php
require LIBS_DIR . '/Nette/loader.php';
// Step 2: Configure environment
// 2a) enable Nette\Debug for better exception and error visualisation
Debug::enable();
Debug::$strictMode = TRUE;
Debug::enableProfiler();
// 2b) load configuration from config.ini file
//Environment::setMode(Environment::PRODUCTION);
Environment::loadConfig();
RobotLoader by se měl natáhnout sám.
Editoval jasir (31. 8. 2009 22:17)
- radvis
- Začátečník | 110
require_once LIBS_DIR . '/Nette/loader.php';
Framework::promo();
//Autoload
$loader = new RobotLoader();
$loader->addDirectory(APP_DIR);
$loader->addDirectory(LIBS_DIR);
$loader->register();
Fatal error: Class ‚Framework‘ not found in C:\wamp\www\neco.cz – Kopie\app\bootstrap.php on line 7
- Zdenal
- Člen | 21
zdravim mam problem s flashMessage mam tuto metodu:
<?php
public function regFormSubmitted($form)
{
$values = $form->getValues();
$firmy = new Firmy;
if($firmy->zaregistrujfirmu($values))
{
$this->flashMessage('Firma je zaregistrovaná.', 'info');
$this->redirect('Default:druh_registraci');
}
else
{
$this->flashMessage('Firmu se nepovedlo zaregistrovat. Prosím zkuste to znovu', 'warning');
$this->redirect('Default:druh_registraci');
}
}
}
?>
a problem je ze pokud pouziji redirect tak me to hodi chybu Cannot set HTTP
code after HTTP headers have been sent (output started at C:\ …
pokud redirect nepouziji hlaska se zobrazi v poradku.
Editoval Zdenal (15. 11. 2009 20:08)
- Ondřej Mirtes
- Člen | 1536
Zdenal napsal(a):
zdravim mam problem s flashMessage…
Podívej se, kde ti ten output začíná.
BTW: V případě, že se nepodařilo zaregistrovat firmu, tak místo flash
message a redirectu použij pouze
$form->addError('Firmu se nepovedlo zaregistrovat. Prosím, zkuste to znovu.')
,
zobrazí se ta samá stránka s vyplněným formulářem od minule, aby mohl
uživatel pozměnit jen nějakou hodnotu a zkusit to znova.
- Zdenal
- Člen | 21
Ondřej Mirtes napsal(a):
BTW: V případě, že se nepodařilo zaregistrovat firmu, tak místo flash message a redirectu použij pouze
$form->addError('Firmu se nepovedlo zaregistrovat. Prosím, zkuste to znovu.')
, zobrazí se ta samá stránka s vyplněným formulářem od minule, aby mohl uživatel pozměnit jen nějakou hodnotu a zkusit to znova.
Diky za addError, dobra vecicka :-) Ale tek k tomu flashMessage tu hlasku vypisuji v @layout, normalne v tele te stranky, uz vazne nevim kde je problem.
- Ondřej Mirtes
- Člen | 1536
Zdenal napsal(a):
Diky za addError, dobra vecicka :-) Ale tek k tomu flashMessage tu hlasku vypisuji v @layout, normalne v tele te stranky, uz vazne nevim kde je problem.
Podívej se do Laděnky, na jaký řádek odkazuje ta hláška „Output started at…“.
- Zdenal
- Člen | 21
Podívej se do Laděnky, na jaký řádek odkazuje ta hláška „Output started at…“.
odkazuje to sem ......\libs\Nette\Web\SessionNamespace.php:191).
<?php
Line 75:
Line 76: if (!isset($allowed[$code])) {
Line 77: throw new InvalidArgumentException("Bad HTTP response '$code'.");
Line 78:
Line 79: } elseif (headers_sent($file, $line)) {
Line 80: throw new InvalidStateException("Cannot set HTTP code after HTTP headers have been sent" . ($file ? " (output started at $file:$line)." : "."));
Line 81:
Line 82: } else {
Line 83: $this->code = $code;
Line 84: $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
Line 85: header($protocol . ' ' . $code, TRUE, $code);
Line 86: }
Line 87: }
?>
Line 80
jo a pouzivam sessions
Editoval Zdenal (17. 11. 2009 17:56)
- Ondřej Mirtes
- Člen | 1536
Zdenal napsal(a):
Asi nikdo nepomůže co???????
Ukaž z Laděnky celou tu cestu (jak se to volá), chyba bude někde u Tebe :)
- Ondřej Mirtes
- Člen | 1536
Zdenal napsal(a):
toto je cela cesta.
Cannot set HTTP code after HTTP headers have been sent (output started at C:\VertrigoServ\www\data\Projekt\libs\Nette\Web\SessionNamespace.php:191).
Ne, toto není celá cesta, myslím call stack. Případně můžeš zkusit Laděnku skrýt (černá šipka v pravém horním rohu) a ten dosavadní výstup uvidíš.
Editoval Ondřej Mirtes (19. 11. 2009 22:35)
- Zdenal
- Člen | 21
Asi nastavit casove pasmo co? Sorry ale jsem zacatecnik.
Strict Standards: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‚Europe/Paris‘ for ‚1.0/no DST‘ instead in C:\VertrigoServ\www\data\Projekt\libs\Nette\Web\SessionNamespace.php on line 191
Editoval Zdenal (19. 11. 2009 22:38)