Как в плагине получать значение input или data?
Добрый день. Подскажите, как в плагине получать значение input или data у элемента из чанка?
Комментарии: 16
$_POST['fieldname'], а data-атрибуты, если вы их имеете в виду, на сервер не передаются.
Спасибо за ответ, но так я могу получить в сниппете. А вот как получить в плагине? КАК ОБРАТИТЬСЯ К ПЛАГИНУ?
На какое событие плагин и что вы вообще хотите сделать?
Разбираю плагин бронирования UserEvents. Там есть событие UserEventsOnBeforeGetOrderCost.
$rid = $modx->getOption("resource", $data);
$cost = 0;
// расчет стоимости согласно своей логике
if ($resource = $modx->getObject("modResource", $rid)) {
$cost = $resource->getTVValue('price') ;
}
$add_cost = 0;
$pricenew = $_POST["price"];
$add_cost += $pricenew;
$cost += $add_cost;
$values["cost"] = $pricenew;
Рассчет цены. У меня допустим своя логика калькулятора. После всех пересчетов, результат попадает в value. <input type="hidden" name="resource" id="resource" value="{$resource}">
<input type="hidden" name="date" id="date" value="0">
<input type="hidden" name="time" id="time" value="0">
<input type="hidden" name="price" id="price" value="10">
. Через POST не получается получить значение поля 'price' Через POST не получается получить значение поля 'price'А вы почему так решили?
Не так выразился, не получается. Принцип работы сниппета и плагина понятен. Но это никак не могу понять. Может сначала надо записать значение кудато, а потом вытаскивать его в плагине? Не могу понять как это работает
Ну это скрипт, который срабатывает при определенном событии, зачастую туда инициализирующих скрипт передает какие-то данные, иногда чтобы изменить данные в плагине нужно получить их по ссылке. Чтобы лучше понять какие данные приходят в плагин полезно посмотреть исходный код класса. И самое первое, что вы должны были сделать заглянуть в документацию там есть пример плагина. Так что конкретно не получается? Вернуть новые значения? А у вас вот эта строка есть
$modx->event->returnedValues = $values;
Да я так пробовал. В моем понимании это должно работать так:
$values = & $modx->event->returnedValues;
$values['price'] = $_POST['price']
Но в документации не так, рекомендую попробовать как там, т.е. не по ссылке.
Спасибо за помощь. Поспрашиваю еще на форумах, пока никак не выходит
returnedValues — возвращает новые значения, а вот как их получить…
Вы пробовали делать так
$values = $modx->event->returnedValues;
$values['price'] = $_POST['price'];
$modx->event->returnedValues = $values;
?
Объясните кто знает как в плагине получить value input? Нигде не нашел
Если событие срабатывает после отправки формы, то значения всех инпутов из этой формы находятся либо в глобальном массиве $_POST, либо в глобальном массиве $_GET, и в глобальном массиве $_REQUEST. Если значение в этом массиве не соответствует ожидаемому, значит оно было перезаписано, нужно поменять ключ не price, а например myprice. Поскольку это глобальные массивы они доступны и в плагине тоже. Других вариантов получить инпут не существует.
Событие срабатывает всякий раз когда выбирается хоть что нибудь.
Выбирается где? На фронте в той же форма где ваш price? Вы в консоли браузера посмотрите на вкладке network запрос к action.php там все данные которые в этот момент уходят на сервер, если там есть то что нужно, значит оно есть в двух из трёх массивов л которых я писала выше.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.