Установить исключение перехвата программно

#php #prestashop #hook #prestashop-1.7

#php #prestashop #перехват #prestashop-1.7

Вопрос:

В пользовательском модуле для prestashop, как можно определить исключение перехвата для специальной страницы (front controller) собственного пользовательского модуля?

Я знаю, что я могу зарегистрироваться для перехватов в install() методе модуля, например, с помощью $this->registerHook('displayHome') и перехваты могут быть настроены в панели администратора prestashop в improve -> design -> positions (и там также в transplant a module разделе). Это работает для всех перехватов, для которых public function hookDisplayX($params) реализован метод.

При пересадке модуля можно определить исключения для страниц, на которых перехват модуля не выполняется. В результате в таблице появляется запись базы данных PREFIX_hook_module_exceptions с именем файла модулей (формат module-<modulename>-<controllername> ), некоторым идентификатором модуля и некоторым идентификатором подключения.

Теперь вопрос в том, как бы я определил это исключение, например, во время install() метода (или, возможно, позже). Единственная информация, которой я располагаю, — это имя файла исключения (поскольку я знаю, какой контроллер отвечает за отображение содержимого).

Ответ №1:

С помощью этого кода:

 $this->registerExceptions(
    Hook::getIdByName('hookNameHere'),
    array(
        'attachment',
        'contact',
        'other-page-name',
    )
);
  

Комментарии:

1. большое спасибо, жаль, что я нигде не нашел этого в документации :/