Evo jedan jednostavan modifier, koji na osnovu datuma rodjenja u formatu YYYY-mm-dd (default mysql DATE format) računa koliko ima godina.
Ne radi se provera da li je datum u budućnosti, računa se da je validacija datuma urađena pri unosu. Kada nije dobar datum ili prazana string, vraća "n/a"
U smartiju se koristi jednostavno kao: {$user.birthday|age}, naravno može da se koristi bilo gde, ne mora smarty
PHP kôd:
<?php
/**
* Age from birthdate
*
* Type: modifier
* Name: age
* Example: {$date|age}
* Date: 2006-03-10
* @author Goran Pilipovic
* @version 1.0
* @param $var - birth date (YYYY-mm-dd)
* @return int
*/
function smarty_modifier_age($var)
{
if (empty($var)) { return "n/a"; }
$date = explode ("-", $var);
if (empty($date[1])) { return "n/a"; } // no month
$year = intval($date[0]);
if (empty($year)) { return "n/a"; } // invalid date
$month = intval($date[1]);
$cur_year = intval(date("Y"));
$cur_month = intval(date("m"));
$age = $cur_year - $year;
if ($cur_month < $month)
{
return $age - 1;
}
return $age;
}
?>