UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: zv.web-industry от 15 Июля 2015, 09:36:18

Название: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 15 Июля 2015, 09:36:18
Доброго дня
Возник вопрос, почему метод getValue() экземпляра umiHierarchyElement может возвращать пустоту, если тип свойства "Изображение" или "Файл". Гуглил много примеров, везде возвращается путь к файлу, а у меня пусто. Пробовал ставить демо версию сайта - так там все работает. На моем рабочем проекте - нет =(((
Свойство не пустое, там прилеплена картинка. Может быть, что это бага, которую исправили в более новых версиях? Моя версия 2.9.7, ревизия 49344

Пример кода (имя выводится, путь к фото нет):
$oElement = umiHierarchy::getInstance()->getElement( 6276, true, true );
echo $oElement->getName();
echo $oElement->getValue('photo');
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: e.ioffe от 15 Июля 2015, 13:37:00
Попробуйте сделать на echo $oElement->getValue('photo');, а var_dump($oElement->getValue('photo'));. Должен возвращаться объект типа umiFile / umiImageFile.
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 15 Июля 2015, 13:59:24
 :(
NULL
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: e.ioffe от 15 Июля 2015, 14:02:41
Значит в базе нет данных о фотографии для этого объекта.
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 15 Июля 2015, 14:07:43
Это что значит? Просто если открыть страницу эту (объект каталога) с расширением .xml - там есть это поле и оно заполнено. Хранится где-то в другом месте информация?
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 17 Июля 2015, 17:10:01
Больше мыслей нет? Проблема актуальна для меня
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: admin от 20 Июля 2015, 10:23:09
Если у страницы с id 6276 есть поле "photo", то ваш код
$oElement = umiHierarchy::getInstance()->getElement( 6276, true, true );
echo $oElement->getName();
echo $oElement->getValue('photo');

должен работать.

Может есть какие-то тонкости с правами на данную страницу? или с правами у того пользователя, который запрашивает данный макрос.

Попробуйте сделать подобные запросы для других страниц и из под админа.
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 20 Июля 2015, 10:49:26
А разве второй параметр не позволяет игнорить права? Инфу брал тут - http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_ierarhii/umihierarchy/getelement/

Пробовал зайди под админом - результат тот же, NULL
Пробовал вывести из другой страницы поле с файлом (из фотогалерии) - результат тот же, NULL
Прав никаких особых не настраивал.

При всем при этом, поля, не связанные с файлами, выводит корректно. То есть проблема именно с файлами (файлы, изображения)

Может быть, есть какие-то настройки CMS, связанные именно с хранением данных в базе о файлах?
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 20 Июля 2015, 15:14:24
Проблема решена, но все очень странно
Добился работы следующим образом - включил тип кэширования "Файловая система", до этого не было включено никакое. При этом, сразу значение свойства отображаться не начал. После открытия страницы на редактирование в админке - стало работать. Но, если сбросить кэш - опять перестает отображать значение свойства. Открываем страницу в админке - начинает работать. Если открывать страницу на просмотр просто на сайте - не помогает, все равное не работает.
Механизм мне не очень понятен. Получается, файл можно дернуть через API только, если он закешировался. При этом кэшируется он при редактировании страницы. Получается, мне нужно прокликать в админке все страницы, что бы все заработало. И делать это каждый раз, когда мне будет необходимо сбросить кэш.

Хотелось бы узнать у гуру, что я делаю не так =))) По мне так это не очень правильная работа
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 20 Июля 2015, 15:25:01
Цитировать
При этом, сразу значение свойства отображаться не начал. После открытия страницы на редактирование в админке - стало работать. Но, если сбросить кэш - опять перестает отображать значение свойства. Открываем страницу в админке - начинает работать. Если открывать страницу на просмотр просто на сайте - не помогает, все равное не работает.
Механизм мне не очень понятен. Получается, файл можно дернуть через API только, если он закешировался. При этом кэшируется он при редактировании страницы. Получается, мне нужно прокликать в админке все страницы, что бы все заработало. И делать это каждый раз, когда мне будет необходимо сбросить кэш.

Про это наврал. Похоже, стало все отображать
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: admin от 20 Июля 2015, 22:00:14
в каком браузере тестировали?
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 21 Июля 2015, 12:06:10
В хроме, Версия 43.0.2357.134 (64-bit)
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: admin от 21 Июля 2015, 12:20:13
Все подозрения на кэш, но какой именно сказать сложно.

P.S. Но в любом случае, если в поле картинка есть инфа, то при просмотре данной страницы в xml формате эта инфа будет выводиться и как следствие к ней можно обратиться из кастомного макроса.
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 29 Июля 2015, 15:35:32
Проблема не решена, с кэшем так и не разобрался. То отображает, то не отображает
В xml формате инфа есть, а как мне к ней обратится?
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 06 Августа 2015, 11:23:04
Нет ли решения у благородных донов моей проблемы?
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 06 Августа 2015, 14:42:27
В общем, плюнул на UMI API, сделал костылем:


$page_id = 158;  //моя страничка
$hierarchy = umiHierarchy::getInstance();
$page = $hierarchy->getElement($page_id);

$object = $page->getObject();

$sql = "SELECT `text_val` FROM `cms3_object_content` WHERE `obj_id`=$object AND `field_id`=495";  // 495 - нужное мне поле с файлом
$res = l_mysql_query($sql);
$r = mysql_fetch_row($res);

print_r($r);

Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: e.ioffe от 07 Августа 2015, 11:03:35
Нужны доступы к сайту для анализа. Можете отправить на support@umispec.ru
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: zv.web-industry от 13 Августа 2015, 16:41:16
 Доступы предоставить не могу, проект рабочий уже
Название: Re: umiHierarchyElement getValue() пустое значения для свойства типа "Изображение"
Отправлено: muldy от 11 Октября 2015, 11:16:25
Была подобная проблема, данное исправление решено в последней версии umi 2.9.11.
Если нет возможности обновится смотрите новую версию umiFile.php.