Jquery 在prestashop 1.5中通过AJAX调用调用控制器函数
我试图通过Prestashop 1.5中的AJAX调用调用控制器函数。我甚至不知道这是否可能。这就是我所做的: 我重写产品控制器(在override/controllers/front/ProductController.php中)以加载额外的媒体,并执行一些默认控制器不执行的操作。这就是我的控制器的外观:Jquery 在prestashop 1.5中通过AJAX调用调用控制器函数,jquery,ajax,function,controller,prestashop,Jquery,Ajax,Function,Controller,Prestashop,我试图通过Prestashop 1.5中的AJAX调用调用控制器函数。我甚至不知道这是否可能。这就是我所做的: 我重写产品控制器(在override/controllers/front/ProductController.php中)以加载额外的媒体,并执行一些默认控制器不执行的操作。这就是我的控制器的外观: <?php class ProductController extends ProductControllerCore { public function setMedia
<?php
class ProductController extends ProductControllerCore
{
public function setMedia() {
parent::setMedia();
// Add extra ressources
// CSS
$this->addCSS(...)
$this->addJS(array(...));
}
// Extra methods
public function renderCart() {
echo '<h2>HELLO</h2>';
}
}
您可以直接调用renderCart()函数,也可以用另一种方法。通常每个控制器都有几个预定义的功能
init()
and initContent()
每个人都有自己的细节和目的,所以我不打算在这里解释它们
现在需要做的是在控制器中创建另一个名为init()的函数,然后用它调用renderCart函数。
检查下面的示例代码
public function init()
{
parent::init(); //First you have to call the parent init to initialize resources
if($this->ajax) //special variable to check if the call is ajax
{
$this->renderCart(); // call your function here or what ever you wanna do
}
}
我希望您能从代码注释中理解
注意:这是一个示例代码,未经测试。这只是为了给你一个想法
感谢您提供了几个关于如何构建ajax链接的示例(您可以在ajax调用中使用它):
示例1:链接到常规控制器(假定为OrderDetailCustom控制器):
示例2:链接到模块的控制器(假设一个SimpleEmailer示例modile和一个SendSimpleEmail模块控制器)
请查看链接类代码中的这些函数。
此外,对于最后一个示例,请参见此处如何构建模块控制器以及命名工作原理:
谢谢你的帮助!但是如何通过AJAX调用调用我的控制器呢?我的$.ajax方法中的URL是什么?@aliasse您是否已经在prestashop中实现了一个工作的ajax调用?如果没有,请转到此文档链接:感谢Dexter分享此链接感谢此有用的链接@DexterHuinda
{$link->getPageLink('order-detail-custom', true)}
//you will then use it like this (note ajax:true):
$.get(ajax_link, {'id_order': id_order, 'ajax': true});
//the controller will then generally have some
//utility functions based on Tools::getValue('ajax') or
//$this->isXmlHttpRequest(); > a builtin Controller class's function
{$link->getModuleLink('simplemailer','sendsimplemail',[],true)}