Как в плагине получать значение input или data?

Добрый день. Подскажите, как в плагине получать значение input или data у элемента из чанка?
Вадим
06 февраля 2021, 13:19
modx.pro
645
0

Комментарии: 16

Артур Шевченко
06 февраля 2021, 14:53
-1
$_POST['fieldname'], а data-атрибуты, если вы их имеете в виду, на сервер не передаются.
    Вадим
    06 февраля 2021, 23:46
    0
    Спасибо за ответ, но так я могу получить в сниппете. А вот как получить в плагине? КАК ОБРАТИТЬСЯ К ПЛАГИНУ?
      Артур Шевченко
      06 февраля 2021, 23:50
      -1
      На какое событие плагин и что вы вообще хотите сделать?
        Вадим
        06 февраля 2021, 23:56
        0
        Разбираю плагин бронирования 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'
          Артур Шевченко
          07 февраля 2021, 00:04
          -1
          Через POST не получается получить значение поля 'price'
          А вы почему так решили?
            Вадим
            07 февраля 2021, 00:14
            0
            Не так выразился, не получается. Принцип работы сниппета и плагина понятен. Но это никак не могу понять. Может сначала надо записать значение кудато, а потом вытаскивать его в плагине? Не могу понять как это работает
              Артур Шевченко
              07 февраля 2021, 00:28
              -1
              Ну это скрипт, который срабатывает при определенном событии, зачастую туда инициализирующих скрипт передает какие-то данные, иногда чтобы изменить данные в плагине нужно получить их по ссылке. Чтобы лучше понять какие данные приходят в плагин полезно посмотреть исходный код класса. И самое первое, что вы должны были сделать заглянуть в документацию там есть пример плагина. Так что конкретно не получается? Вернуть новые значения? А у вас вот эта строка есть
              $modx->event->returnedValues = $values;
                Вадим
                07 февраля 2021, 00:46
                0
                Да я так пробовал. В моем понимании это должно работать так:
                $values = & $modx->event->returnedValues;
                	$values['price'] = $_POST['price']
                  Артур Шевченко
                  07 февраля 2021, 01:01
                  -1
                  Но в документации не так, рекомендую попробовать как там, т.е. не по ссылке.
                    Вадим
                    07 февраля 2021, 01:18
                    0
                    Спасибо за помощь. Поспрашиваю еще на форумах, пока никак не выходит
                      Вадим
                      07 февраля 2021, 02:01
                      0
                      returnedValues — возвращает новые значения, а вот как их получить…
                        Артур Шевченко
                        07 февраля 2021, 02:22
                        -1
                        Вы пробовали делать так
                        $values = $modx->event->returnedValues;
                        $values['price'] = $_POST['price'];
                        $modx->event->returnedValues = $values;
                        ?
    Вадим
    07 февраля 2021, 02:01
    0
    Объясните кто знает как в плагине получить value input? Нигде не нашел
      Артур Шевченко
      07 февраля 2021, 02:27
      -1
      Если событие срабатывает после отправки формы, то значения всех инпутов из этой формы находятся либо в глобальном массиве $_POST, либо в глобальном массиве $_GET, и в глобальном массиве $_REQUEST. Если значение в этом массиве не соответствует ожидаемому, значит оно было перезаписано, нужно поменять ключ не price, а например myprice. Поскольку это глобальные массивы они доступны и в плагине тоже. Других вариантов получить инпут не существует.
        Вадим
        07 февраля 2021, 02:35
        0
        Событие срабатывает всякий раз когда выбирается хоть что нибудь.
          Артур Шевченко
          07 февраля 2021, 02:53
          -1
          Выбирается где? На фронте в той же форма где ваш price? Вы в консоли браузера посмотрите на вкладке network запрос к action.php там все данные которые в этот момент уходят на сервер, если там есть то что нужно, значит оно есть в двух из трёх массивов л которых я писала выше.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      16