Я сталкиваюсь со странной ситуацией. Я пытаюсь переопределить контроллер корзины и могу добиться успеха, если я CartController.php
файл в / Переопределение / Контроллеры / передний и происходит сбой, если я помещаю тот же файл в свой пользовательский модуль и устанавливаю модуль. Путь файла в модуле MyModule / переопределение / Контроллеры / передний. Содержимое файла
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');
}
Что мне здесь не хватает?
Я верю, что ты все делаешь хорошо.
Переопределение в вашем модуле копируется в папку / файл переопределения при установке модуля, если для этой функции класса уже нет другого переопределения.
Смотрите этот ответ https://stackoverflow.com/a/24114184
Привет, 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');
}