переопределение — Prestashop 1.6 переопределение FrontController.php для добавления пользовательских хуков

Я попытался добавить пользовательский хук для моего пользовательского модуля.

Если я добавлю его прямо в FrontController.php (/Classes/controller/FrontController.php) внутри initContent () и внутри displayHeader () функции нового определения становится:

$this->context->smarty->assign(array(
'HOOK_HEADER'       => $hook_header,
'HOOK_TOP'          => Hook::exec('displayTop'),
'HOOK_MYCUSTOM' => Module::hookExec('myCustomHook'), /* <- my hook */
'HOOK_LEFT_COLUMN'  => ($this->display_column_left  ? Hook::exec('displayLeftColumn') : ''),
'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),
'HOOK_FOOTER'       => Hook::exec('displayFooter')
));

Работает отлично …

Но если я попытаюсь переопределить FrontControlle.php, добавив /modules/myModule/override/classes/controller/FrontController.php файл, который содержит:

class FrontController extends FrontControllerCore
{
public function initContent()
{
$this->process();

if (!isset($this->context->cart))
$this->context->cart = new Cart();

if ($this->context->getMobileDevice() == false) {

if (!isset($this->context->cart))
$this->context->cart = new Cart();

$this->context->smarty->assign(array(

'HOOK_HEADER' => Hook::exec('displayHeader'),
'HOOK_TOP' => Hook::exec('displayTop'),
'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''),
'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''),

'HOOK_MYCUSTOM' => Module::hookExec('myCustomHook') /* <- my hook */
));

} else {
$this->context->smarty->assign(array(
'HOOK_MOBILE_HEADER' => Hook::exec('displayMobileHeader'),
));
}
}public function displayHeader($display = true){

if (!self::$initialized)
parent::init();
self::$smarty->assign(array(
'HOOK_MYCUSTOM' => Module::hookExec('myCustomHook') /* <- my hook */
));

return parent::displayHeader();
}
}

Я получаю следующее:

Примечание: неопределенный индекс: HOOK_MYCUSTOM в
/home6/viralcom/public_html/osgaming/tools/smarty/sysplugins/smarty_internal_templatebase.php(157)
: eval () код в строке 54

Примечание: попытка получить свойство необъекта в
/home6/viralcom/public_html/osgaming/tools/smarty/sysplugins/smarty_internal_templatebase.php(157)
: eval () код в строке 54

Не могли бы вы помочь мне выяснить, что не так с приведенным выше кодом?


Задача решена!


Я перешел в файл /modules/myModule/override/classes/controller/FrontController.php

ряд:

'HOOK_MYCUSTOM' => Module::hookExec('myCustomHook')

с :

'HOOK_MYCUSTOM' => Hook::exec('myCustomHook')

ПОСЛЕ ЭТОГО я добавил функцию автоматического удаления файла:

/cache/class_index.php

в функцию установки моего модуля:

public function install() {
if (!parent::install() OR !$this->installDB() OR !$this->delecache())
return false;

[...]

}

public function delecache(){
if(!unlink($_SERVER['DOCUMENT_ROOT']."/cache/class_index.php"))
return false;

return true;
}

Теперь отлично работает! Спасибо всем!

0

Решение

Вы удалили class_index.php файл находится в папке / cache /?

Каждый раз, когда вы переопределяете класс, вы должны удалить этот файл.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]