Mam php skript (controller) ktory nacitava a spracuva data. Ide konkretne o hotely s detailami, medzi ktorymi je aj hodnotenie hotelu (hviezdicky). Hodnotenie je v ciselnom tvare s krokom 0.5, tzn napr 2, alebo 5, alebo 3.5...
Na vystupe tuto informaciu potrebujem zobrazit v obrazkovom tvare. Napr hodnotenie 2.5 by generovalo taketo html:
Kód: Vybrať všetko
<img src="/img/icon-star.png" alt="*">
<img src="/img/icon-star.png" alt="*">
<img src="/img/icon-star2.png" alt="+">Z hladiska MVC modelu si myslim, ze by controller mal do sablony (view modelu) posielat tento udaj v surovom tvare - ako float (napr 2.5) a view model by sa mal postarat o vyrenderovanie tohto udaju do tvaru aky potrebujem v tomto pohlade - obrazkoveho.
Tento problem som riesel pomocou FILTERS v mustache, no nepaci sa mi, ze definicia obrazkov hviezdiciek sa nachadza v .php subore (controller.php), kdezto by sa mala nachadzat v template, kedze sa priamo tyka dizajnu / interpretacie.
rating.mustache:
Kód: Vybrať všetko
{{% FILTERS }}
{{{ rating | img_rating }}}Kód: Vybrať všetko
$m = new Mustache_Engine();
$m->addHelper('img_rating', function($rating) {
$output = str_repeat('<img src="/img/icon-sun.png" alt="*">', floor($rating));
if ($rating > floor($rating)) {
$output .= '<img src="/img/icon-sun2.png" alt="+">';
}
return $output;
});
$data = array(
'rating' = 2.5,
);
echo $m->render('rating', $data);
Dufam, ze pisem zrozumitelne. Dakujem.