Произвольный конфиг плагина Есть решение
Всем привет!
Создаю конфиг для плагина на стандартном интерфейсе.
Интересует вопрос:
Каким образом можно сохранить два произвольных значения на один уникальный идентификатор.
Эта тема в архиве. Добавление комментариев к ней отключено.










10 ответов
Идентификатор чего вы имеете в виду? Можно более подробно, по возможности с примером?
$setting_key — произвольный уникальный текстовый идентификатор поля настроек.
В общем хочется сохранять значения в таком виде как на картинке:
Возможно, вам подойдёт использование массива:
<input name="products[id][]" value="111">
<input name="products[category][]" value="666">
<input name="products[id][]" value="555">
<input name="products[category][]" value="777">
Все значения будут переданы внутри одного поля с идентификатором products.
Я понимаю, что инпуты в виде массив значений, но как в таком виде вывести на страницу настроек плагина.
Почитал про
waHtmlControl::CUSTOM
Я так понимаю, при указании этого параметра, можно сформировать произвольный html-код?
Да.
Спасибо.
Только вот почему-то сохранять не хочет.
Вообще говоря, плагин на странице своих настроек может рисовать произвольный HTML. И сохранять настройки куда угодно. Даже файлом settings.php пользоваться не обязательно: генерация из него HTML происходит в классе shopPlugin->getControls(), а сохранение настроек из POST'а - в shopPlugin->saveSettings(). Так что достаточно переопределить эти два метода. А там уж дело ваше, как и куда сохранять этот массив. Хошь в отдельную свою таблицу, хошь сериализацией в wa_app_settings.
(А у вас как есть не сохраняется, потому что стандартная shopPlugin->saveSettings() этого делать не умеет.)
Не два метода, а три... Ещё ->getSettings(). Вообще, посмотрите код класса shopPlugin. Там кроме работы с настройками и нет ничего, по сути.
Спасибо Леонид за замечание.
Причина НЕ сохранения заключалась в не правильном формате инпута, аттрибута name.
<input name=\"shop_pluginname[products][666]\" value=\"111\">
Проверил, данные хранятся в сериализованном виде. Так что все нормально.