#ajax #controller #request #prestashop
#ajax #контроллер #запрос #prestashop
Вопрос:
У меня возникли трудности с передачей значения из моего личного js в контроллер и восстановлением его на личной странице tpl.
Этот модуль будет использоваться для настройки продукта после некоторых выборов и заполнения полей.
Выбранные элементы переходят с вкладок на вкладки. Проблема в том, что я не могу получить значение {$ var}
У меня есть:
- JS в root-> modules-> modulename-> views-> js->namejsfile.js
- КОНТРОЛЛЕР в корне-> модули-> имямодуля-> контроллеры-> передняя панель->controllername.php
- ПРОСМОТР в root->modules->modulename->views->templates-> front->filename.tpl
в JS
$('#send').click(function(){
var ciao = 'cioaa';
var myUrl = prestashop.urls.base_url 'index.php?fc=moduleamp;module=configuratore';
$.ajax({
type: 'get',
cache:false,
url: myUrl,
data: {
ajax: true,
datas:ciao,
action: 'fromAjax',
},
})
.done(function() {
console.log('Success!');
})
.fail(function() {
console.log('error');
});
});
в PHP
class ConfiguratoreTaskModuleFrontController extends ModuleFrontController
{
public function __construct()
{
parent::__construct();
}
public function init()
{
parent::init();
}
public function initContent()
{
parent::initContent();
$this->setTemplate('module:configuratore/views/templates/front/task.tpl');
}
$this->fromAjax();
}
public function fromAjax()
{
$mVar = Tools::getValue('datas');
return $this->context->smarty->assign(array('var'=>$mVar));
}
в TPL
{$var}
Комментарии:
1. Я исправил, добавив контроллер в URL.
amp;controller=task
Я получаю ответ в журнале консоли, но я не вижу параметр на пользовательской странице. что я делаю не так?
Ответ №1:
<?
public function fromAjax()
{
$mVar = Tools::getValue('datas');
$this->context->smarty->assign(array('var'=>$mVar));
$templateFile = 'module:configuratore/views/templates/front/task.tpl';
$html = $this->fetch($templateFile);
die($html); // pass to JS
}
в JS:
.done(function(html) {
console.log(html);
})
Комментарии:
1. Нет, не работает. ошибка ответа с
Attempted to call an undefined method named "createTemplate" of class "ConfiguratoreTaskModuleFrontController"
и при возврате кsetTemplate
ошибка начинаетсяCall to a member function fetch() on null
2. О, извините. Я имел в виду метод использования, а не функции, которые я использовал. Сообщение было обновлено
3. Спасибо Махди. Я изменил вашу выборку в
$this->context->smarty->fetch
на основе последней версии, и теперь ошибка в макетеNotice: Undefined index: layout