Makro {if podminka} … {else} … {/if}
- Endrju
- Člen | 147
Zdravím, potřeboval bych přjít na to, proč mi nefunguje makro:
{if !empty($news)}
{foreach $news AS $newsItem}
...
<div id="content">{!$newsItem->content}</div>
...
{/foreach}
{else}
<div class="flash {$flash->type}">Žádné aktuality k zobrazení.</div>
{/if}
$news naplnuji v renderDefault takto:
public function renderDefault()
{
$news = new News;
$this->template->news = $news->findAll()->orderBy('added');
}
Kdyz v databazi nejake aktuality jsou, tak se v poradku vypisuji. Kdyz tam ale neni zadna, tak bych chel zobrazit to info v casti else. To se mi ale bohuzel nezobrazuje a ja netusim proc.
Dekuji :)!
Pak bych se ještě chtěl mimo téma zeptat jak by mělo fungovat (nebo
jaké byly úmysly) s css zápisem u flash messages. Co by mělo znamenat to
{$flash->type}
(class="flash {$flash->type}"
)?
Predstavuji si pod tim, ze type nastavim treba jako info/error/notice a podle
toho jaky type to je, tak se treba jinak barevne zobrazi ta flash zprava. Je to
takto zamysleno?
Pak by me zajimalo jak by bylo treba napsat CSS styl pro jednotlive tyto notices. Puvodni styl je:
div.flash {
color: black;
background: #FFF9D7;
border: 1px solid #E2C822;
padding: 1em;
margin: 1em 0;
text-align: center;
}
EDIT: uz jsem si zjistil jak funguje ta metoda flashMessage, takze potrebuju vedet jak to nastylovat?
Nemuzu totiz v CSS napast` div.flash info { … }` nebo
div.flash error { ... }
atd. Nevim jak to udelat, aby to pak
odpovidalo vygenerovanemu kodu z
class="flash {$flash->type}"
.
Diky.
Editoval Endrju (7. 3. 2010 16:56)
- Ola
- Člen | 385
Ad. 1) aby se na to dalo odpovědět je třeba, abys sem dal ještě metodu modelu – findall – hádám ale že použiváš dibidatasource, pak je potřeba dotaz vykonat – dibidatasource je lazy, je potřeba v presenteru zavolat ještě metodu fetchAll (stačí to fluent doplnit za orderby).
Ad. 2) chubí ti tečka před selektorem
- Endrju
- Člen | 147
Ola napsal(a):
Ad. 1) aby se na to dalo odpovědět je třeba, abys sem dal ještě metodu modelu – findall – hádám ale že použiváš dibidatasource, pak je potřeba dotaz vykonat – dibidatasource je lazy, je potřeba v presenteru zavolat ještě metodu fetchAll (stačí to fluent doplnit za orderby).
News model, ktery dedi z Base modelu:
class News extends BaseModel
{
/** @var string */
private $table = 'news';
...
public function findAll()
{
return $this->db->select('*')->from($this->table);
}
...
}
V tom Base modelu mam:
abstract class BaseModel extends Object
{
private static $db;
public function getDb()
{
if (self::$db == NULL) {
self::$db = new DibiConnection(Environment::getConfig("database"));
}
return self::$db;
}
}
Co bych tedy mel kde a jak upravit? A ano, v config.ini
mam
nastaveno database.lazy = TRUE
Ola napsal(a):
Ad. 2) chybí ti tečka před selektorem
Promin, asi upne nerozumim (jen tusim). Mas na mysli tu tecku pred „info“
div.flash .info { … }
?
Pokud ne, tak by bylo asi nejlepsi, kdyby jsi mi take ukazal, jak by treba vypadal ukazkovy CSS styl pro ty ruzne flash message. Dekuji