[Решено] Invalid argument supplied for foreach()

Тема в разделе "OpenCart", создана пользователем Ping, 29 июн 2015.

  1. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
    Ошибка в модуле flyout-mega-menu-v3.
    Warning: Invalid argument supplied for foreach() in /home/zjvovvwn/public_html/moto/catalog/controller/module/flyoutmenumodule.php on line 911
    Как побороть ее ?
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    У тебя в переменной $added_menus должен быть массив, а там не он. Откуда эта переменная берётся?
     
  3. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
     
  4. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    Добавь перед:
    $this->config->get('flyoutmenumodule_added_menus');
    эти строки:
    $this->log->write('added_menu_conf:' . print_r($this->config->get('flyoutmenumodule_added_menus'),1));
    и отпиши, что в журнале.

    Попробуй переустанови модуль.
     
  5. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
    Вот что в журнале появилось:
     
  6. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    648
    Симпатии:
    327
    пустой массив, оптимальное решение, это проставить заглушку преед:
    Код:
    foreach ($added_menus as $menu) {
    вот так:
    Код:
    if (isset($added_menus)) {
    и соотв. в конце, закрыть:
    Код:
    }
    Но проблема в том, что в админке не добавлены категории, или так должно быть ?
     
    Ping нравится это.
  7. Ping

    Ping PingWin always win Команда форума

    Регистрация:
    29 окт 2012
    Сообщения:
    443
    Симпатии:
    301
    Поставил заглушку.
    Категории все есть.
    Спасибо :Smile:
     
    Baco нравится это.
  8. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    266
    Аналогичная проблема с мудулем категорий у меня, вродь попробовал поставить заглушку как советовал Baco, собственно вот содержимое контроллера:
    Сам текст предупреждения: Warning: Invalid argument supplied for foreach() in ......../catalog/view/theme/journal2/template/module/category.tpl on line 5
    Код шаблона (тоже пытался ставить заглушку)
    Пока предупреждение не вижу, но оно "блуждающее" какое-то, иногда появляется, а в основном норм все.
     
  9. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    778
    Потому что ошибка в данных, а не в коде (в коде просто недоработка).

    Надо вот эту строку поправить:
    PHP:
    <?php if (isset($categories)) { ?>
    Такой вариант решит все проблемы:
    PHP:
    <?php if (isset($categories) && is_array($categories) && !empty($categories)) { ?>
     
    cereberlum нравится это.