Создание обьекта класса с заполнением стандартных данных.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Kappa
Сообщения: 9
Зарегистрирован: Ср май 10, 2017 9:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Создание обьекта класса с заполнением стандартных данных.

Сообщение Kappa » Пт май 12, 2017 9:53 am

Привет!

Создаю обьект, все нормально создается, но не могу понять как задать поле description

Пробовал $obj->setProperty("description", "test"); как указано в http://majordomo.smartliving.ru/Main/Pr ... gFunctions при попытке считать сразу вроде все нормально, но при этом в админке ничего не меняется...

Что делаю не так? Так же есть вопрос как можно задать месторасположение из кода?
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Создание обьекта класса с заполнением стандартных данных

Сообщение xor » Пт май 12, 2017 11:44 pm

По ссылке, указанной в посте, указано
$obj-> description; Доступ к описанию объекта
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Создание обьекта класса с заполнением стандартных данных

Сообщение nick7zmail » Сб май 13, 2017 2:33 am

Как вариант - можно напрямую в базу вставить...сразу с описанием...

Код: Выделить всё

      $className = 'openweather';
      $objectName = array('ow_city', 'ow_setting', 'ow_fact', 'ow_day0', 'ow_day1', 'ow_day2');
      $objDescription = array('Местоположение', 'Настройки', 'Текущая температура', 'Прогноз погоды на день', 'Прогноз погоды на завтра', 'Прогноз погоды на послезавтра');
      $rec = SQLSelectOne("SELECT ID FROM classes WHERE TITLE LIKE '" . DBSafe($className) . "'");
      
      if (!$rec['ID'])
      {
         $rec = array();
         $rec['TITLE'] = $className;
         $rec['DESCRIPTION'] = 'Погода Open Weather Map';
         $rec['ID'] = SQLInsert('classes', $rec);
      }
      
      for ($i = 0; $i < count($objectName); $i++)
      {
         $obj_rec = SQLSelectOne("SELECT ID FROM objects WHERE CLASS_ID='" . $rec['ID'] . "' AND TITLE LIKE '" . DBSafe($objectName[$i]) . "'");
         
         if (!$obj_rec['ID'])
         {
            $obj_rec = array();
            $obj_rec['CLASS_ID'] = $rec['ID'];
            $obj_rec['TITLE'] = $objectName[$i];
            $obj_rec['DESCRIPTION'] = $objDescription[$i];
            $obj_rec['ID'] = SQLInsert('objects', $obj_rec);
         }
      } 
За это сообщение автора nick7zmail поблагодарили (всего 2):
Kappa (Сб май 13, 2017 6:09 am) • Amarok (Сб май 13, 2017 7:46 am)
Рейтинг: 2.33%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Kappa
Сообщения: 9
Зарегистрирован: Ср май 10, 2017 9:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Создание обьекта класса с заполнением стандартных данных

Сообщение Kappa » Сб май 13, 2017 6:09 am

xor писал(а):По ссылке, указанной в посте, указано
$obj-> description; Доступ к описанию объекта
Я так понимаю это считать описание.
nick7zmail писал(а):По ссылке, указанной в посте, указано
Как вариант - можно напрямую в базу вставить...сразу с описанием...
Вот не хочется костылить прямым доступом, при обновлении что поменяется и что может случиться хз... Но если выбора не будет, хоть такое решение...
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Создание обьекта класса с заполнением стандартных данных

Сообщение xor » Сб май 13, 2017 11:20 am

У меня работает по описанию

Код: Выделить всё

$obj=getObject('nl0');
$obj-> description="Новое описание";
say($obj-> description);
лог
11:18 Алиса: Новое описание
11:17 Алиса: Новая комната

///////////////////////////
Упс! Выводит правильно, но в объекте не меняет.
Тогда, да - только в базу прямо писать.
а для расположения в таблицу objects пишется location_id, для этого нужно сначала в таблице locations его найти по имени.
Геморрой.
Kappa
Сообщения: 9
Зарегистрирован: Ср май 10, 2017 9:14 am
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Создание обьекта класса с заполнением стандартных данных

Сообщение Kappa » Вс май 14, 2017 1:25 am

Вот, вот... и меня та же проблема...

Найти-то обьект по имени не проблема, в любом случае там все через MQTT запрос идет, все данные есть... А писать в базу это костыли... Странно что стандартное присваивание не реализовано...

Хм... Или тупо бага?...
Ответить