2017-01-07 9 views
1

У меня возникла странная ситуация. Я пытаюсь переопределить контроллер корзины, и я могу добиться успеха, если я поместил файл CartController.php в /переопределить/контроллеры/фронт и не смог, если я поместил тот же файл в свой пользовательский модуль и установил модуль. Путь файла в модуле: myModule/переопределение/контроллеры/фронт. Содержимое файла:Prestashop 1.7 переопределяет контроллер ядра от модуля

class CartController extends CartControllerCore 
{ 
    public function init() 
    { 
    die('Override'); 
    } 
} 

Я также зарегистрировал крючок, и он отображает штраф.

public function install() 
    { 
    if (Shop::isFeatureActive()) 
     Shop::setContext(Shop::CONTEXT_ALL); 

    return parent::install() && $this->registerHook('Test'); 
    } 

    public function uninstall() 
    { 
    if (!parent::uninstall() || 
     !Configuration::deleteByName('MYMODULE_NAME')) 
     return false; 
    return true; 
    } 

    public function hookTest($params){ 

    return $this->display(__FILE__, '/views/templates/hook/testpage.tpl'); 
    } 

Что мне здесь не хватает?

ответ

0

Я считаю, что вы все в порядке. Переопределение в вашем модуле копируется в папку/файл переопределения при установке модуля, если для этой функции класса не существует другого переопределения. https://stackoverflow.com/a/24114184

0

Привет, curious_coder, все вышеперечисленные вами упомянуты вами правильно, но вы пропустили, как переопределить файл в соответствующей папке.

Запишите код в свой собственный пользовательский модуль для переопределения файла.

protected static $overrides = array(
    'controllers/front/CartController.php' 
);//Override file name 

public function install(){ 
    if (Shop::isFeatureActive()) 
    Shop::setContext(Shop::CONTEXT_ALL); 
    foreach(self::$overrides as $file){ 
     $explode = explode("/", $file); 
     $file_name = $explode[count($explode)-1]; 
     unset($explode[count($explode)-1]); 
     $folder = implode("/", $explode); 
     @mkdir (_PS_OVERRIDE_DIR_.$folder, 0777, true); 
     @copy (_PS_MODULE_DIR_.$this->name.'/override/'.$folder."/".$file_name 
    , _PS_OVERRIDE_DIR_.$folder."/".$file_name); 
     $old = @umask(0); 
     @chmod (_PS_OVERRIDE_DIR_.$folder."/".$file_name, 0777); 
     @umask($old); 
    } 
    return parent::install() && $this->registerHook('Test'); 
}