2015-08-28 69 views
1

我是新來的prestashop,所以如果我問一個非常簡單的問題,請耐心等待。 我正在創建模塊,在我的任務中,我必須擴展由javascript中的ajaxcart.add()函數調用的cart控制器。 我想知道,響應此ajax請求的控制器位於何處,以及如何在我的模塊中擴展此控制器。 有沒有關於這方面的很好的文檔? 感謝哪裏可以找到prestashop控制器,我如何擴展它們?

+0

由於A.維瑟建議,你應該閱讀的Prestashop文檔。有很多關於擴展現有功能的信息。您還可以查看其他模塊,爲現有代碼添加其他功能。 – nathangiesbrecht

+0

我添加了一種溶劑,我在找到prestashopo罩內時發現了溶劑。任何人都可以通過類似的方式來擴展/classes/[email protected] –

回答

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