2013-06-25 6 views
2

Я работаю над кнопкой, которая переключает вид с помощью onClick. Я хочу сохранить последнее/значение по умолчанию в переменной, чтобы предотвратить переход в состояние представления по умолчанию при каждом обновлении или навигации по странице.Как создать переменную smarty в prestashop 1.5

Я прочитал, что я могу сделать следующее в файле PHP:

$myVar= -1; 
$smarty->assign('myVar', $myVar); 

, а затем использовать $myVar в TPL файле. Но это не работает для меня. Файл tpl, над которым я работаю, не является частью модуля и не имеет файла .php в корневой папке prestashop.

Может ли кто-нибудь просветить меня немного на smarty/php и как создать переменные и использовать их для хранения состояния кнопки?

Благодаря

ответ

4

Smarty шаблон движок PHP для PHP, который облегчает разделение представления (XHTML/CSS) из PrestaShop в основных функциях/контроллеров.

Файл шаблона (обычно с расширением .tpl в PrestaShop) всегда вызывается файлом контроллера PHP (он может быть главным контроллером ядра или контроллером модуля).

Пример: /prestashop/controllers/front/ContactController.php

$this->context->smarty->assign(array(
    'contacts' => Contact::getContacts($this->context->language->id), 
    'message' => html_entity_decode(Tools::getValue('message')) 
)); 

$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl'); 

Мы можем видеть, что этот файл извлечения информации из базы данных и присвоения его Smarty.

После этого шаблон 'contact-form.tpl' отобразит его посетителям.

Синтаксис очень похож на модули, пример: /prestashop/modules/blocklink/blocklink.php

public function hookLeftColumn($params) 
{  
    $this->smarty->assign('blocklink_links', $this->getLinks()); 

    return $this->display(__FILE__, 'blocklink.tpl'); 
} 

Кроме того, для хранения значений в переменных Smarty, вы можете использовать «присвойте» функции двумя способами:

  1. $this->context->smarty->assign('my_smarty_variable_name', $my_value);

    или если у вас есть несколько переменных:

  2. $this->context->smarty->assign(array('my_smarty_variable_name1' => $my_value1), ('my_smarty_variable_name2' => $my_value2));

А потом в шаблоне Smarty:

The value of my variable is {$my_smarty_variable_name|escape:'htmlall':'UTF-8'}. 

'побег' модификатор используется, чтобы избежать проблем безопасности XSS.

+0

Я пытаюсь сделать то же самое, переопределив orderreturncontrollercore, присутствующий в контроллерах администратора, но нет никаких переменных smarty в файле form.tpl, можете ли вы сказать мне, почему? –

+0

Можете ли вы создать отдельный вопрос и опубликовать свой код (как PHP, так и Smarty) для просмотра? –

3

Для того, чтобы использовать переменные в Smarty файле, вам нужно использовать, например:

$this->context->smarty->assign(
    array(
     'myVar' => $myvar, 
     'otherVar' => $otherVar 
    ) 
); 

Затем, чтобы использовать его в вашем TPL файл вам просто нужно использовать:

<div>my var = {$myVar}</div> 

Для используйте переменную в своем умении, вам нужно написать ее внутри {}.

+0

Я пытаюсь сделать то же самое, переопределив orderreturncontrollercore, присутствующий в контроллерах админа, но в файле form.tpl не появляются переменные smarty, может ли я сказать почему? –