Я новичок в prestashop, поэтому, пожалуйста, несите меня, если я задаю очень простой вопрос. Я занимаюсь созданием модуля, и в своей задаче я должен расширить контроллер тележки, который вызывается функцией ajaxcart.add() в javascript. Я хочу знать, где находится контроллер, который отвечает на этот запрос ajax, и как я могу расширить этот контроллер в моем модуле. Есть ли хорошая документация по этому поводу? благодаря
Я нашел способ расширения стандартных контроллеров 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
Пример контроллера mycart внутри модуля isacalc
class areacalcmycartModuleFrontController extends CartController {
Путь файла к контроллеру mycart внутри модуля isacalc
/modules/areacalc/controllers/front/mycart.php
url будет
http://localhost:8080/index.php?fc=module&module=areacalc&controller=mycart
Вы можете переопределить defaut CartController.php, в папке модуля переопределения вы добавляете свой код класса (только модифицированный метод), в этом случае я предполагаю, что вы измените метод processChangeProductInCart, вы можете увидеть документацию переопределения prestashop