我是新來的prestashop,所以如果我問一個非常簡單的問題,請耐心等待。 我正在創建模塊,在我的任務中,我必須擴展由javascript中的ajaxcart.add()函數調用的cart控制器。 我想知道,響應此ajax請求的控制器位於何處,以及如何在我的模塊中擴展此控制器。 有沒有關於這方面的很好的文檔? 感謝哪裏可以找到prestashop控制器,我如何擴展它們?
1
A
回答
3
我找到了一種擴展模塊內prestashop默認控制器的方法。 我看着iniside的classes/Dispatcher.php
,發現這個調度()方法
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
示例mycart controll一個areacalc模塊內的areacalc模塊內部呃
class areacalcmycartModuleFrontController extends CartController {
的文件路徑mycart控制器
/modules/areacalc/controllers/front/mycart.php
URL將被
http://localhost:8080/index.php?fc=module&module=areacalc&controller=mycart
0
您可以覆蓋defaut CartController.php,在超越模塊文件夾,你在這種情況下,我想你應該修改processChangeProductInCart方法添加類代碼(僅修改後的方法),你可以看到prestashop override documentation
由於A.維瑟建議,你應該閱讀的Prestashop文檔。有很多關於擴展現有功能的信息。您還可以查看其他模塊,爲現有代碼添加其他功能。 – nathangiesbrecht
我添加了一種溶劑,我在找到prestashopo罩內時發現了溶劑。任何人都可以通過類似的方式來擴展/classes/[email protected] –