Поскольку есть уже такая тема, пишу сюда. Вопрос схож по применению @EVAL в TV.
Есть сниппет вычисления возраста по дате:
$tvTemp = $modx->documentObject;
if(isset($tvTemp['dob'][1]) && $tvTemp['dob'][1] !== '')
{
$dob = explode('-', $tvTemp['dob'][1]);
$timestamp = mktime(0, 0, 0, $dob[1], $dob[0], $dob[2]);
$age = ((time() - $timestamp) / (60 * 60 * 24 * 365));
$outputAge = substr($age, 0, strpos($age, "."));
$yong = range(5,19);
$let = array(0,5,6,7,8,9);
$god = array(1);
$goda = array(2,3,4);
$agelast = substr($outputAge, -1, 1);
if(in_array($outputAge, $yong)) $text = 'лет';
else
{
if(in_array($agelast, $let)) $text = 'лет';
elseif(in_array($agelast, $god)) $text = 'год';
elseif(in_array($agelast, $goda)) $text = 'года';
}
echo $age.' '.$text;
}
else echo 'не указан';
dob - это TV типа Date. Если вызывать его из других сниппетов - все работает. Но хотелось бы иметь вызов в другом TV через @EVAL. Делаю так:
@EVAL return $modx->runSnippet('SnippetName');
и ничего... Точнее не проходим условие
if(isset($tvTemp['dob'][1]) && $tvTemp['dob'][1] !== '')
Пожалуйста, наведите на путь истинный.