Не работает интерфейсный хук, почему?

Есть тестовый хост, где я веду разработку, и есть хост клиента, которому я заливаю плагин. На моем хосте (тема default) все работает. На его хосте - нет. 

Подписался на хук:

'handlers' =>
        array(
            'frontend_my_nav' => 'frontendMyNav'
        ),


В плагине есть метод:

public static function frontendMyNav()
    {
        $view_helper = new waViewHelper(wa()->getView());

        return &#039;<a href="&#039; . $view_helper->myUrl() . &#039;discounts/">Мои скидки</a>&#039;;
    }

В приложении Shop редактирую my.nav.html:

...
<li>Тестовая строка, файл подключается</li>

<!-- plugin hook: &#039;frontend_my_nav&#039; -->
{* @event frontend_my_nav.%plugin_id% *}
{foreach $frontend_my_nav as $_plugin => $_}
<li class="shop {if waRequest::param(&#039;plugin&#039;) == str_replace(&#039;-plugin&#039;, &#039;&#039;, $_plugin)}selected{/if}">{$_}</li>
{/foreach}

{$wa->globals(&#039;isMyAccount&#039;, true)}

В итоге, захожу в личный кабинет, и вижу строку Тестовая строка, но в frontend_my_nav == null. Кеш чистил, дебаг режим включал, в чем может быть проблема?

Раздел сайта для авторизации в настройках домена - Shop. 

Плагин включен.

Роут со скидками работает.

5 ответов

  • 1
    Михаил Ушенин 31 января 2019 15:45 #

    Кеш Webasyst чистили?

    • +1
      Quasar Quasar 31 января 2019 15:51 #

      Да, я нажимал кнопку в инсталлере, нажимал кнопку в приложении "Настройки", и, чтоб на верняка, полностью удалял содержимое папки wa-cache. 

      Или есть ещё какие-то кеши?


      Поставил приложение "Управление плагинами", в нем видно, что мой плагин зарегистрирован на данный хук.


      wa_dump говорит что $frontend_my_nav == null:

      dumped from wa-cache/apps/shop/templates/compiled/shop_ru_RU/0b/9c/e9/0b9ce9db90f0215a0100b4dd7b6785a6e4731590.file.my.nav.html.php line #64:
      
      NULL

  • 1
    Quasar 31 января 2019 18:17 #

    В общем, заметил, что на тебе default все отлично выводится, на модифицированной теме (которая форкнутый default) - нет. 

    shopMyNavAction не срабатывает, просто напросто. Кто знает фреймворк, в каких случаях это происходит? Поиск по коду, увы, ничего не дает, так как судя по всему, данный экшен подключается динамически.

  • 1
    enso_studio@mail.ru 31 января 2019 21:37 #

    Возможно тема/плагин используют аналогичную переменную - поищи в php/html коде frontend_my_nav. Также другой плагин мог переопределить данный экшен - поотключай плагины с роутингом.

    • +2
      Quasar Quasar 1 февраля 2019 10:05 #

      Проблема была в том, что файл my.nav.html просто инклюдился, а нужно делать вызов {wa->myNav('')}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите