We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 48332
    • 37 Posts
    Запускаю до боли бональную конструкцию:
    $res = $modx->getObject('modResource',1);
    $output = $res->toArray();
    print "<pre>";
    print_r($output);
    при этом выходит страшная, я подчеркиваю страшная ошибка:
    Fatal error: Call to a member function toArray() on a non-object in /var/www/gocl/data/www/google.ru/core/cache/includes/elements/modsnippet/15.include.cache.php on line 25
    В чем дело и как быть?

    This question has been answered by multiple community members. See the first response.

    • discuss.answer
      • 48332
      • 37 Posts
      И возможно с чем-то похожим связана вот эта ошибка:
      Fatal error: Call to a member function get() on a non-object in /var/www/gocl/data/www/google.ru/core/cache/includes/elements/modsnippet/15.include.cache.php on line 29

      стр. 28 $res = $modx->getObject('modResource',$id);
      стр. 29 $output = $res->get($val);
      стр. 30 return $output;
      • discuss.answer
        • 49529
        • 196 Posts
        Страшная паника!

        Я предложил бы для начала банальную вещь - убедиться, что ресурс с ID = 1 существует.

        Функция getObject возвращает либо объект, либо false, если искомый объект не найден. Функция toArray() работает для объекта, но не для false, поэтому и бросается ошибка.
        Добавьте проверку в свой код:

        $res = $modx->getObject('modResource',1);
        
        // !!!
        if (! is_object($res)) {
            $modx->log(modX::LOG_LEVEL_ERROR, 'Ресурс не найден!');
            return false;
        }
        
        $output = $res->toArray();
        print "<pre>";
        print_r($output);
        
        • discuss.answer
          • 49529
          • 196 Posts
          То же относится и ко второй ошибке. Вы пытаетесь выполнить
          $res->get($val)

          , но $res в данном случае очевидно равен false, и метод get поэтому к нему неприменим. Сделайте print_r или var_dump для $res, после того, как вы попытались его получить, и убедитесь в этом.

          Еще небольшая просьба - не забывайте указывать версию MODX при создании новой темы.
            • 48332
            • 37 Posts
            whitebyte огромное Вам спасибо.
            Ваше предположение оказалось верным.
            Впредь обязательно буду указывать версию замечательной CMS (или СМF) modx. wink