在哪里可以找到 prestashop 控制器以及如何扩展它们?
where can I find prestashop controllers and how can i extend them?
我是 prestashop 的新手,所以如果我问的是一个非常简单的问题,请耐心等待。
我正在创建模块,在我的任务中,我必须扩展由 javascript 中的 ajaxcart.add() 函数调用的购物车控制器。
我想知道响应此 ajax 请求的控制器位于何处,以及如何在我的模块中扩展该控制器。
关于这个有什么好的文档吗?
谢谢
您可以覆盖默认 CartController.php,在覆盖模块文件夹中添加您的 class 代码(仅修改后的方法),在这种情况下我想您会修改 processChangeProductInCart 方法,您可以查看 prestashop override documentation
我找到了一种在模块内扩展 prestashop 默认控制器的方法。
我在 classes/Dispatcher.php
内部查看并在 dispatch() 方法
中找到了这个
case self::FC_MODULE :
$module_name = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : '';
$module = Module::getInstanceByName($module_name);
$controller_class = 'PageNotFoundController';
if (Validate::isLoadedObject($module) && $module->active) {
$controllers = Dispatcher::getControllers(_PS_MODULE_DIR_.$module_name.'/controllers/front/');
if (isset($controllers[strtolower($this->controller)])) {
include_once(_PS_MODULE_DIR_.$module_name.'/controllers/front/'.$this->controller.'.php');
$controller_class = $module_name.$this->controller.'ModuleFrontController';
}
}
$params_hook_action_dispatcher = array('controller_type' => self::FC_FRONT, 'controller_class' => $controller_class, 'is_module' => 1);
所以,控制器的命名约定是
<modulename><controllername>ModuleFrontController
控制器的路径应该是
module/<module name>/cotrollers/front/<controllername>.php
areacalc 模块内的示例 mycart 控制器
class areacalcmycartModuleFrontController extends CartController {
areacalc 模块内 mycart 控制器的文件路径
/modules/areacalc/controllers/front/mycart.php
url 将是
http://localhost:8080/index.php?fc=module&module=areacalc&controller=mycart
我是 prestashop 的新手,所以如果我问的是一个非常简单的问题,请耐心等待。 我正在创建模块,在我的任务中,我必须扩展由 javascript 中的 ajaxcart.add() 函数调用的购物车控制器。 我想知道响应此 ajax 请求的控制器位于何处,以及如何在我的模块中扩展该控制器。 关于这个有什么好的文档吗? 谢谢
您可以覆盖默认 CartController.php,在覆盖模块文件夹中添加您的 class 代码(仅修改后的方法),在这种情况下我想您会修改 processChangeProductInCart 方法,您可以查看 prestashop override documentation
我找到了一种在模块内扩展 prestashop 默认控制器的方法。
我在 classes/Dispatcher.php
内部查看并在 dispatch() 方法
case self::FC_MODULE :
$module_name = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : '';
$module = Module::getInstanceByName($module_name);
$controller_class = 'PageNotFoundController';
if (Validate::isLoadedObject($module) && $module->active) {
$controllers = Dispatcher::getControllers(_PS_MODULE_DIR_.$module_name.'/controllers/front/');
if (isset($controllers[strtolower($this->controller)])) {
include_once(_PS_MODULE_DIR_.$module_name.'/controllers/front/'.$this->controller.'.php');
$controller_class = $module_name.$this->controller.'ModuleFrontController';
}
}
$params_hook_action_dispatcher = array('controller_type' => self::FC_FRONT, 'controller_class' => $controller_class, 'is_module' => 1);
所以,控制器的命名约定是
<modulename><controllername>ModuleFrontController
控制器的路径应该是
module/<module name>/cotrollers/front/<controllername>.php
areacalc 模块内的示例 mycart 控制器
class areacalcmycartModuleFrontController extends CartController {
areacalc 模块内 mycart 控制器的文件路径
/modules/areacalc/controllers/front/mycart.php
url 将是
http://localhost:8080/index.php?fc=module&module=areacalc&controller=mycart