2012-08-02 7 views
1

Я работаю над сайтом для некоторых квартир.Smarty replace and array

У меня есть некоторые данные, присваиваемые Smarty в цикле foreach.

$i = 0; 
foreach ($obj2 as $array) { 
    $smarty->assign('name'.$i, $obj2[$i]['name']); 
    $smarty->assign('numbedrooms'.$i, $obj2[$i]['number_of_bedrooms']); 
    $smarty->assign('numbathrooms'.$i, $obj2[$i]['number_of_bathrooms']); 
    $smarty->assign('sqfeet'.$i, $obj2[$i]['square_feet']); 
    $smarty->assign('deposit'.$i, $obj2[$i]['deposit']); 
    $smarty->assign('rent'.$i, $obj2[$i]['rent']); 
    $smarty->assign('vacantunits'.$i, $obj2[$i]['vacant_units']); 
    $i++; 
} 

Когда шаблон будет загружен ($smarty->display('template.tpl');) Я хочу все данные будут доступны через replace (как replace:'[[lowestrate]]':{$lowestrate} (например, из другого блока кода)).

Однако, поскольку количество элементов в $obj2 может измениться (в настоящее время 3), я не могу просто сказать replace:'[[name1]]':{$name1}. (Не говоря уже о том, сколько времени потребуется)

Кроме того, требуется замена причины из-за того, что содержимое страницы управляется из системы CMS с помощью редактора WYSIWYG, где редактор может набирать [[lowestrate]], чтобы заменить его самым низким стоимость квартиры. Они должны иметь возможность набрать [[name1]], чтобы заменить его на первую квартиру, или [[numberbedrooms1]] на замену на количество спальных апартаментах 1.

Есть ли у кого-нибудь идеи относительно того, как я должен это делать?

+0

Первое, что приходит в голову - это настраиваемый плагин 'preg_match'ing содержимого найти псевдопеременные и заменить их соответствующими значениями переменных ('$ smarty-> getTemplateVars()') – bububaba

+0

Почему foreach? Не могли бы вы отправить данные в smarty как массив? –

ответ

0

Это похоже на работу, которую вы должны выполнять на уровне PHP, а не на уровне smarty. Я предлагаю вам выполнить замену перед назначением smarty, а затем отправить преобразованный массив, будет намного проще (и более чистым imho)