2013-04-14 2 views
1

Я пытаюсь создать модуль для Prestashop. Но мой tpl-файл не может видеть переменные.tpl не видит переменные smarty

payicon.php:

function hookFooter($params){ 
    $group_id="{$base_dir}modules/mymodule/payicon.php"; 

    $smarty = new Smarty; 
    $smarty->assign('group_id', '$group_id'); 
    return $this->display(__FILE__, 'payicon.tpl'); 
    return false; 
} 

payicon.tpl:

<div id="payicon_block_footer" class="block"> 
    <h4>Welcome!</h4> 
    <div class="block_content"> 
     <ul> 
      <li><a href="{$group_id}" title="Click this link">Click me!</a></li> 
     </ul> 
    </div> 
</div> 

Update:

Это установка:

public function install() { 
    if (!parent::install() OR !$this->registerHook('Footer')) 
    return false; 

    return Db::getInstance()->execute(' 
     CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'pay_icon` (
      `id_icon` int(10) unsigned NOT NULL, 
      `icon_status` varchar(255) NOT NULL, 
      `icon_img` varchar(255) DEFAULT NULL, 
      `icon_link` varchar(255) NOT NULL, 
      PRIMARY KEY (`id_icon`) 
     ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;'); 
    return true; 
} 
+1

Try: '$ smarty-> назначить ('group_id', $ group_id);' – PaulRoth

+0

Это не помогает – hottern

+0

Тот факт, что вы видите {$} означает, что либо PHP или умник не проанализируйте 'tpl'. Взгляните на свою установку. –

ответ

1

Я не знаю о prestashop, но могу рассказать вам о smarty и PHP. Я вижу много очевидных проблем в коде

1) $base_dir не доступен в функции. добавить

global $base_dir; 

в начале функции, чтобы сделать ее доступной в области этой функции.

2)

$smarty = new Smarty; 

Эта линия не должна быть там, я думаю. Это инициализирует новый экземпляр Smarty, который не имеет никакого отношения к коду вне функции.
Заменить эту строку с

global $smarty; 

который сделает глобальный $smarty (экземпляр класса Smarty) доступны в этой функции

3)

$smarty->assign('group_id', '$group_id'); 

является неправильным. Замените его

$smarty->assign('group_id', $group_id); 

ВОЗМОЖНО Решение
Как ваш вопрос не получает много внимания, я буду стараться, чтобы придумать ответ, по крайней мере, вы в правильном направлении (если не решить проблему)

попытка заменить эту функцию с

public function hookFooter($params){ 
    global $base_dir; 
    global $smarty; 

    $group_id="{$base_dir}modules/mymodule/payicon.php"; 

    $smarty->assign('group_id', '$group_id'); 
    return $this->display(__FILE__, 'payicon.tpl'); 
} 

Update

My bad: D. забыл заменить '$group_id' в окончательном коде.Попробуйте

public function hookFooter($params){ 
    global $base_dir; 
    global $smarty; 

    $group_id="{$base_dir}modules/mymodule/payicon.php"; 

    $smarty->assign('group_id', $group_id); 
    return $this->display(__FILE__, 'payicon.tpl'); 
} 
+0

спасибо, но он все еще не работает правильно. он не показывает значение $ group_id Click me! hottern

+0

Вы уверены, что сделали редактирование, упомянутое в пункте (3)? '$ smarty-> assign ('group_id', $ group_id);'? – Ejaz

+0

О, сори, это моя ошибка. Спасибо – hottern

Смежные вопросы