Передача переменных в файл просмотра Smarty
Здравствуйте, я пытаюсь отправить значение из моего файла PHP в файл TPL.
Когда я печатаю _p в php-файле, я вижу, что мое значение определено в массиве, однако, когда я печатаю_Tpl-файл, я не вижу этот элемент.
<img src="{$product.manufacturer_name}" alt="" title="" itemprop="image" />
и мой контроллер
$special = Product::getProducts((int)$this->langID , 0,6, 'name', 'DESC', 51);
foreach ($special as $specia)
{
$id_image = Product::getCover($specia['id_product']);
// get Image by id
if (sizeof($id_image) > 0)
{
$image = new Image($id_image['id_image']);
// get image full URL
$image_url = _PS_BASE_URL_._THEME_PROD_DIR_.$image->getExistingImgPath()."-home_default.jpg";
$specia['manufacturer_name']=$image_url;
}
}
$dir = _PS_MODULE_DIR_.'/ptspagebuilder/views/templates/front/widgets/sub/products.tpl';
$tdir = _PS_ALL_THEMES_DIR_ . _THEME_NAME_ . '/modules/ptspagebuilder/views/templates/front/widgets/sub/products.tpl';
if (file_exists($tdir)) {
$dir = $tdir;
}
// get Product cover image (all images is possible retrieve by
// Image::getImages($id_lang, $id_product) or
// $productInstance->getImages($id_lang))
$setting['product_tpl'] = $dir;
$setting['products'] = $special;
$output = array('type' => 'flashsale','data' => $setting);
return $output;
}
2 ответа
Если $special
содержат массивы, чем вы ошиблись в скрипте, измените копии переменных в цикле foreach. Попробуй поменятьforeach ($special as $specia)
в foreach ($special as $k=>$specia)
$specia['manufacturer_name']=$image_url;
в $special[$k]['manufacturer_name']=$image_url;
На самом деле я не понял твою проблему. Вы сказали, что вы присвоили значение в вашем php-файле, но я не вижу никакого назначенного значения. Для присвоения значения в php-файле вы должны назначить значение в переменной smarty, чтобы вы могли получить к нему доступ в своем tpl-файле. Для этого вы должны написать код примерно так:
Сначала в вашем контроллере вы должны присвоить значение как:
$this->smarty->assign(array(
'product' => $containing_product,
));
$ Product содержит значение, к которому вы хотите получить доступ в вашем файле tpl.
Теперь в вашем файле TPL вы можете проверить это как:
{var_dump($product)}
И теперь в вашем файле TPL вы можете использовать это
<img src="{$product}" alt="" title="" itemprop="image" />