Как правильно использовать свой AJAX для плагина доставки?
Приветствую коллеги!
Прошу помощи разобраться, кто в теме.
Необходимо передать в плагин доставки (самописный) длину маршрута, чтобы рассчитать итоговую стоимость доставки, которую я условно могу получить с помощью API Yandex.Карт.
На поле ввода адреса стоит дефолтный обработчик, дергающий /data/shipping, передающий несколько параметров для перерасчета, но лезть в JS код фреймворка, чтобы добавлять свои код не вижу смысла.
В документации к разработке есть абзац по использованию своего AJAX, но описан крайне сухо, без примеров с контекстом. В нем есть кусок кода,
$url_params = array( 'action_id' => 'foo', //в этом примере будет вызван публичный метод плагина с именем 'fooAction', который должен сформировать полноценный ответ на AJAX-запрос 'plugin_id' => $this->key, ); wa()->getRouteUrl(sprintf('%s/frontend/shippingPlugin', $this->app_id), $url_params, true);
который где-то надо прописать, который "должен сформировать полноценный ответ на AJAX-запрос". Не понимаю куда нужно вставлять этот код, чтобы этот маршрут работал, в каком виде должен быть ответ (так же в JSON?), заменяет ли этот экшен calcualte(), если он может "обновить стоимость отображаемую доставки" (кстати там похоже опечатка в тексте), или их надо подружить, и каким образом заставить стандартный элемент формы (ввода адреса) стучать на этот маршрут (если для этого предусмотрены стандартные средства).
Может кто-то уже реализовывал нечто подобное?
Заранее благодарен за помощь.
7 ответов
Вот это
сформирует вам урл для обращения к своему экшену в плагине доставки. И всё.
Остальное вы делаете сами.
То есть у вас где то будет js-код, который вы выводите на витрине в чекауте и там обрабатываете нужные вам триггеры и через .ajax/.post получаете нужные данные через этот урл.
Николай, спасибо за пояснение!
Подскажите пожалуйста, а куда нужно прописать wa()->getRouteUrl(sprintf('%s/frontend/shippingPlugin', $this->app_id), $url_params, true)?
Поэкспериментировал с кастомными полями customFields(), разобрался где и как юзать код из документации, отвечающей за построение маршрута и ajax запросы.
Тем не менее не совсем понимаю, куда двигаться дальше - реализовать всю логику пересчета в этом экшене (тогда как связать его с rates и calculate и в конечном итоге с итоговой ценой доставки, которая запишется в заказ) и юзать json ответ для перерисовки цены или у него все таки не такое назначение?
через хуки
да тут все через такую жопу
p.s в любой непонятной ситуации смотри чужие плагины) p.s. хотя зачастую и там треш)
Разобрались?) тоже мучает этот вопрос..
Указанный пример служит для обращения к плагину ajax запросом, например, чтобы обновить стоимость доставки на странице оформления.
Формат данных и прочие детали реализации можно посмотреть в waSystemPlugin и waPayment.
если в плагине нужно получить скажем данные от яндекс api, то можно создать запрос используя waNet
Вот это
сформирует вам урл для обращения к своему экшену в плагине доставки. И всё.
У меня не получается... пишет при обращении 404 not found http://gr.hoh-blog.ru/data/shipping/18/checkDelive...