[Разработчикам] Информация и рекомендации
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Разработка модулей (Рекомендации)
Нужна помощь по модулю...
Ситуация: В папке modules валяется отдельный php-шник нужный для исполнения какого-либо кода, вызывается прямой командой из браузера (/modules/module_name/php_name.php?params=val например)....но чтобы этот код выполнить - ему нужны некоторые данные из таблиц.
Проблема: SQLSelect/SQLSelectOne не определены в этом php-шнике, и как следствие не запускаются...чтобы он корректно считал записи - что нужно сделать? Может библиотеку какую подключить?
Ситуация: В папке modules валяется отдельный php-шник нужный для исполнения какого-либо кода, вызывается прямой командой из браузера (/modules/module_name/php_name.php?params=val например)....но чтобы этот код выполнить - ему нужны некоторые данные из таблиц.
Проблема: SQLSelect/SQLSelectOne не определены в этом php-шнике, и как следствие не запускаются...чтобы он корректно считал записи - что нужно сделать? Может библиотеку какую подключить?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
Если php-шник в папке модуля, то подойдёт такой шаблон:nick7zmail писал(а):Нужна помощь по модулю...
Ситуация: В папке modules валяется отдельный php-шник нужный для исполнения какого-либо кода, вызывается прямой командой из браузера (/modules/module_name/php_name.php?params=val например)....но чтобы этот код выполнить - ему нужны некоторые данные из таблиц.
Проблема: SQLSelect/SQLSelectOne не определены в этом php-шнике, и как следствие не запускаются...чтобы он корректно считал записи - что нужно сделать? Может библиотеку какую подключить?
Код: Выделить всё
<?php
chdir(dirname(__FILE__) . '/../../');
include_once("./config.php");
include_once("./lib/loader.php");
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
// здесь ваш код
// ...
$db->Disconnect();
- За это сообщение автора sergejey поблагодарили (всего 2):
- nick7zmail (Вт янв 17, 2017 7:40 pm) • Bagir (Вт фев 14, 2017 9:40 am)
- Рейтинг: 2.33%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Разработка модулей (Рекомендации)
Спасибо, работает.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
извиняюсь за нубский вопрос, подскажите как програмно создать объекты класса, свойства, методы (табка "объекты"). Перерыл несколько плагинов, разобрался как создаать сам класс, но объекты почему-то не создаются. Вернее создаются, но только с таким же именем как сам класс. Спасибо.
Последний раз редактировалось Gelezako Пн янв 23, 2017 7:03 pm, всего редактировалось 1 раз.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
Например такGelezako писал(а):извиняюсь за нубскийвопрос, подскажите как програмно создать объекты класса, свойства, методы (табка "объекты"). Перерыл несколько плагинов, разобрался как создаать сам класс, но объекты почему-то не создаются. Вернее создаются, но только с таким же именем как сам класс. Спасибо.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
спасибо за ссылку, класс создаётся, но объёкт всё равно создаётся с именем как сам класс, а не такйо как я указываю. В чём проблема?Например так
Использую вот так:
$obj="newobj";
addClass('NewClass');
addClassObject('NewClass',$obj);
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Разработка модулей (Рекомендации)
Лично я в БД сразу заносил в модуле
Вроде работает
Код: Выделить всё
$className = 'ya_traffic'; //имя класса
$objectName = array('yt_settings', 'yt_info');//имя обьектов
$objDescription = array('Настройки', 'Информация о пробках'); //даже описание объектов есть
$rec = SQLSelectOne("SELECT ID FROM classes WHERE TITLE LIKE '" . DBSafe($className) . "'");
if (!$rec['ID']) {
$rec = array();
$rec['TITLE'] = $className;
$rec['DESCRIPTION'] = 'Пробки от Яндекс';
$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 поблагодарил:
- Gelezako (Вт янв 24, 2017 5:02 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
nick7zmail спасибо, заработало, до этого я выпиливал проверку существования ID-шника и с ней почему-то не работало. Вставил её и теперь всё норм. Поставил ваш плагин по пробкам. Теперь вот пытаюсь создать метод, беру пример как у вас:
вставляю свой класс, имя метода и подправляю путь и имя своего пхп файла, нажимаю реинстал, получаю ошибку:
Parse error: syntax error, unexpected 'DROP' (T_STRING) in C:\_majordomo\htdocs\modules\MiLight\MiLight.class.php on line 261
в этой строке у меня вот что:
Почему не получается удалить эту таблицу, я не пойму. Так же руками удалял свой класс и пробовать проинсталить как бы с нуля. Всё равно та же ошибка с поппыткой дропнуть таблицу. Подскажите что я делаю не так? Спасибо.
Код: Выделить всё
addClassMethod('ya_traffic', 'update', 'include_once(DIR_MODULES."app_yatraffic/app_yatraffic.class.php");
Parse error: syntax error, unexpected 'DROP' (T_STRING) in C:\_majordomo\htdocs\modules\MiLight\MiLight.class.php on line 261
в этой строке у меня вот что:
Код: Выделить всё
SQLExec('DROP TABLE IF EXISTS MiLamp1');
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
разобрался, оказывается там параметров в функциюю передаётся очень много в 2 строки
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Разработка модулей (Рекомендации)
Продолжнаю учиться писать плагин и очередная загвоздка. Оформил страницу с настройками и не получается записать в свойство класса введённое пользователем значение. В файле action_admin.html сделал форму с полем и кнопкой:
в файле myplugin.class.php создал функцию:
Подскажите что не так и почему не сохраняется в свойстве введённое значение? Не могу понять, как работает конструкция action="?"
Ещё функции addClassMethod() и addClassProperty() не принимают параметр description. А мне их тоже надо добавить. Я нашёл реализацию этой функции в objects.class.php и добавил в качестве параметра description и в скуль запрос тоже добавить его, но почему-то это не сработало. Подскажите в чём ошибка?
Код: Выделить всё
<form action="?" method="post" enctype="multipart/form-data" name="save_settings" class="form-horizontal">
<fieldset>
<div class="form-actions">
<button type="submit" name="subm" value="Submit" class="btn btn-primary"><#LANG_UPDATE#></button>
<input type="hidden" name="view_mode" value="update_settings">
<input type="hidden" name="mode" value="update"><br>
<div class="form-group">
<label class="col-md-3">Хост* :</label>
<div class="col-md-3">
<input type="text" name="host" class="form-control" placeholder="192.168.1.100" value="[#HOST#]"><br>
<button type="submit" name="subm" value="settings" class="btn btn-primary">Сохранить</button>
</div></div></fieldset></form>
Код: Выделить всё
function save_settings()
{ global $host;
if(isset($host)) sg('MiLamp1.Host',$host);
}
Ещё функции addClassMethod() и addClassProperty() не принимают параметр description. А мне их тоже надо добавить. Я нашёл реализацию этой функции в objects.class.php и добавил в качестве параметра description и в скуль запрос тоже добавить его, но почему-то это не сработало. Подскажите в чём ошибка?
Код: Выделить всё
function addClassMethod($class_name, $method_name, $code = '', $description=''){
$class_id = addClass($class_name);
if ($class_id) {
$sqlQuery = "SELECT *
FROM methods
WHERE CLASS_ID = '" . $class_id . "'
AND TITLE LIKE '" . DBSafe($method_name) . "'
AND OBJECT_ID = 0";
$method = SQLSelectOne($sqlQuery);
if (!$method['ID']) {
$method = array();
$method['CLASS_ID'] = $class_id;
$method['OBJECT_ID'] = 0;
$method['CODE'] = $code;
$method['TITLE'] = $method_name;
$method['DESCRIPTION'] = $description;
$method['ID'] = SQLInsert('methods', $method);
}
else {
if ($code != '' && $method['CODE'] != $code) {
$method['CODE'] = $code;
SQLUpdate('methods', $method);
}
return $method['ID'];
} } }
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E