4 ajax module prestashop prestashop-1.7
我有一个名为“MyMenu”的 PrestaShop 模块,我想通过 AJAX 调用调用此菜单。我的模块显示在hookFooter()方法中:
public function hookFooter()
{
$display = $this->display(__FILE__, 'megamenu.tpl', $smartyCacheId);
Tools::restoreCacheSettings();
return $display;
}
Run Code Online (Sandbox Code Playgroud)
我想用这个脚本显示:
<div class="load_menu"></div>
<script>
$(document).ready(function (e) {
$.ajax({
method: "POST",
url: "../modules/MyMenu.php",
data: {},
success: function (data) {
$('.load_menu').html(data);
}
})
});
</script>
Run Code Online (Sandbox Code Playgroud)
最好的方法是通过链接到您的模块的前端控制器来完成。您可以像这样调用网址:
$link->getModuleLink('modulename','controller', $parameters);
// Parameters is an optionnal array, it can be empty
Run Code Online (Sandbox Code Playgroud)
对于控制器,放置一个像这样的文件 ./modules/modulename/controllers/front/ajax.php ,内容如下:
class ModuleNameAjaxModuleFrontController extends ModuleFrontController
{
public function initContent()
{
$response = array('status' => false);
require_once _PS_MODULE_DIR_.'modulename/modulename.php';
$module = new ModuleName;
if (Tools::isSubmit('action')) {
$context = Context::getContext();
$cart = $context->cart;
switch (Tools::getValue('action')) {
case 'actionname':
$response = array('status' => true);
break;
default:
break;
}
}
// Classic json response
$json = Tools::jsonEncode($response);
$this->ajaxDie($json);
// For displaying like any other use this method to assign and display your template placed in modules/modulename/views/template/front/...
// $this->context->smarty->assign(array('var1'=>'value1'));
// $this->setTemplate('template.tpl');
// For sending a template in ajax use this method
// $this->context->smarty->fetch('template.tpl');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11008 次 |
| 最近记录: |