Передача переменных в файл просмотра 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" />
Другие вопросы по тегам