Как Обратиться По Api К Тк, Находясь В Настройке Способа Доставки

Доброе время суток.

Что-то совсем запутался. Есть работающая штука по расчету стоимости доставки от ТК Аксиомус и Boxberry. Хочу сделать модуль по человечески, чтобы настройки вынести в админку и убрать их из кода.

Нужно во вкладке "настройки" способа доставки "самовывоз" при нажатии на кнопку, ссылку сделать обращение по API к ТК.

Пытаюсь смотреть по аналогии со СДЭК. Там есть ссылка "получить ID по городу". И всё дальше ступор. Так и не мог найти, где этот запрос делается? Я так понял он все-таки не по API обращается.

А как сделать такое обращение? Я просто хочу к примеру обновить список ПВЗ (по всей России). Как мне такую штуку сделать из админки и из настроек способа доставки?

Или лучше сделать кнопкой, как например, кнопка "тест" на вкладке "общее" способа доставки "самовывоз"? Просто кнопке указать контроллер и все.

Как правильнее сделать?

Доброе время суток.

Что-то совсем запутался. Есть работающая штука по расчету стоимости доставки от ТК Аксиомус и Boxberry. Хочу сделать модуль по человечески, чтобы настройки вынести в админку и убрать их из кода.

Нужно во вкладке "настройки" способа доставки "самовывоз" при нажатии на кнопку, ссылку сделать обращение по API к ТК.

Пытаюсь смотреть по аналогии со СДЭК. Там есть ссылка "получить ID по городу". И всё дальше ступор. Так и не мог найти, где этот запрос делается? Я так понял он все-таки не по API обращается.

А как сделать такое обращение? Я просто хочу к примеру обновить список ПВЗ (по всей России). Как мне такую штуку сделать из админки и из настроек способа доставки?

Или лучше сделать кнопкой, как например, кнопка "тест" на вкладке "общее" способа доставки "самовывоз"? Просто кнопке указать контроллер и все.

Как правильнее сделать?

Смотрите видео "Как работает Ajax" , а потом смотрите как это делает в СДЭК.

Какая принципиальная разница где брать информацию в базе, в файле или в стороннем API ? Никакой.

Смотрите видео "Как работает Ajax" , а потом смотрите как это делает в СДЭК.

Какая принципиальная разница где брать информацию в базе, в файле или в стороннем API ? Никакой.

Даниил, смотрел не однократно.

Начал делать кнопкой по аналогии с кнопкой "тест".

В шаблоне настроек самовывоза (в файле pickup.tpl) сделал кнопку

{include file="buttons/button.tpl" but_role="action" but_name="dispatch[my_delivery.boxberry_import_punkt]" but_text=__("my_delivery.boxberry.import_punkt") but_meta="cm-submit btn cm-skip-validation cm-ajax cm-form-dialog-opener"}

Она выводится на страничке, все ОК. При нажатии я так понял должно появится окно. Для этого в своем контроллере, а именно my_delivery при режиме boxberry_import_punkt сделал по аналогии следующий код:

    Tygh::$app['view']->display('addons/my_delivery/result_import.tpl');
    exit;

Но окно не выводится. Сам файлик result_import.tpl имеет следующий код:

Привет!

Я так понял в контроллер и не попадает управление.

Где я тупанул?

Даниил, смотрел не однократно.

Начал делать кнопкой по аналогии с кнопкой "тест".

В шаблоне настроек самовывоза (в файле pickup.tpl) сделал кнопку

Где я тупанул?

Смотрите ещё раз.

И вообще, задача не понятна, какую то настройку и т.д.

Можно и без Ajax , просто сделать пост контроллер для страницы настройки способа доставки или в настройках модуля хранить настройки.

Убрал из кнопки cm-ajax - при нажатии на кнопку выдалась 404 ошибка. Я так поняло, контроллер найти не может? Не правильно указал?

Убрал из кнопки cm-ajax - при нажатии на кнопку выдалась 404 ошибка. Я так поняло, контроллер найти не может? Не правильно указал?

Угушеньки

И вообще, задача не понятна, какую то настройку и т.д.

Можно и без Ajax , просто сделать пост контроллер для страницы настройки способа доставки или в настройках модуля хранить настройки.

Не, не настройку. мне надо из админки по нажатию на кнопку обновить список ПВЗ. (местоположения)

Угушеньки

И как правильный путь указать? полностью писать что ли?

Не, не настройку. мне надо из админки по нажатию на кнопку обновить список ПВЗ. (местоположения)

Зачем Ajax? Обычная кнопка-ссылка на контроллер который заканчивается редиректом туда же.


И как правильный путь указать? полностью писать что ли?

Контроллер вообще есть?

my_delivery.boxberry_import_punkt

Вернул обратно в кнопке вот это

but_name="dispatch[shippings.test]"

по аяксу окно не появляется, но если убрать у кнопки аякс, то открывается на весь экран окно теста стандартное.

Значит мой контроллер не находится :(

Контроллер вообще есть?

my_delivery.boxberry_import_punkt

Да, файл лежит

/app/addons/my_delivery/controllers/backend/my_delivery.php

его содержимое:

<?php

use Tygh\Http;
use Tygh\Registry;
use Tygh\Shippings\Shippings;

if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }

if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

return true;

}

if ($mode == ‘manage’) {

exit;        

}
if ($mode == ‘boxberry_import_punkt’) {

fn_print_r('7777777777777777');
Tygh::$app['view']->display('addons/my_delivery/result_import.tpl');
exit;

}

Вернул обратно в кнопке вот это

but_name="dispatch[shippings.test]"

по аяксу окно не появляется, но если убрать у кнопки аякс, то открывается на весь экран окно теста стандартное.

Значит мой контроллер не находится :(

Да, файл лежит

/app/addons/my_delivery/controllers/backend/my_delivery.php

Ajax отправляется POST запросом

if ($_SERVER['REQUEST_METHOD']    == 'POST') {

return true;

}

Сделал так:

<?php

use Tygh\Http;
use Tygh\Registry;
use Tygh\Shippings\Shippings;

if (!defined(‘BOOTSTRAP’)) { die(‘Access denied’); }

if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

if ($mode == 'manage') {

	exit;        
}
if ($mode == 'boxberry_import_punkt') {

	fn_print_r('7777777777777777');
	Tygh::$app['view']->display('addons/my_delivery/result_import.tpl');
	exit;
	
}

}

теперь под кнопкой сразу выводится "Привет", а окно не появляется.

Ну хоть что-то. Но почему окно не появляется?

Сделал так:теперь под кнопкой сразу выводится "Привет", а окно не появляется.

Ну хоть что-то. Но почему окно не появляется?

Какое окно? Где окно? Почему оно должно появится?

P.S. Давайте вы не будете гадать, а будете думать над своими действиями :) Мы не в Хогвардтсе, и даже в Хогвардсе Гарри не сразу смог использовать заклинания, и уж точно не мог их угадывать.

Даниил, понимаю, что я надоел вам своими дурацкими вопросами.

Окно. Речь про окно, которое появляется по кнопке "тест" на вкладке "общее" способа доставки "самовывоз". Именно по этой аналогии я и делаю. Мне такое окно с результатами импорта надо.

У меня содержимое файла 'addons/my_delivery/result_import.tpl' (по аналогии с файлом 'views/shippings/components/test.tpl' из стандартного контроллера shippings.php) появляется не в окне, а сразу под кнопкой.

P.S. Вроде бы я стараюсь как можно понятнее изложить свои злоключения и уж конечно же думаю над своими действиями :)

Даниил, понимаю, что я надоел вам своими дурацкими вопросами.

Окно. Речь про окно, которое появляется по кнопке "тест" на вкладке "общее" способа доставки "самовывоз". Именно по этой аналогии я и делаю. Мне такое окно с результатами импорта надо.

У меня содержимое файла 'addons/my_delivery/result_import.tpl' (по аналогии с файлом 'views/shippings/components/test.tpl' из стандартного контроллера shippings.php) появляется не в окне, а сразу под кнопкой.

P.S. Вроде бы я стараюсь как можно понятнее изложить свои злоключения и уж конечно же думаю над своими действиями :)

Окна просто так не появляются, если есть возможность обойтись - обойдитесь.

Окна просто так не появляются, если есть возможность обойтись - обойдитесь.

Я это понимаю. Также понимаю, что что-то упустил. Сделал вроде бы все по аналогии с кнопкой "тест" на вкладке "общее" способа доставки "самовывоз" , но ...

ааааааааааа, ща головой ап стенку буду стучаться. Не работает окно, не появляется. И теперь окно, которое при нажатии кнопки"тест" появлялось тоже не появляется. Млиииииииииииииин

Даниил, выручите, плиз. Может я пошел не по тому пути? Запутался. Задача то вроде простая. Нужно из админки при нажатии на кнопку (ссылку) выполнить некий код (обращение по API к ТК) и вывести результат во всплывающем окне.

Сам код есть и он прекрасно работает, если просто вызвать самописанный контроллер, вбив его адрес в адресной строке браузера.

Но вот прицепить его к кнопке - все мозги сломал.

Даниил, выручите, плиз. Может я пошел не по тому пути? Запутался. Задача то вроде простая. Нужно из админки при нажатии на кнопку (ссылку) выполнить некий код (обращение по API к ТК) и вывести результат во всплывающем окне.

Сам код есть и он прекрасно работает, если просто вызвать самописанный контроллер, вбив его адрес в адресной строке браузера.

Но вот прицепить его к кнопке - все мозги сломал.

Посмотрите как работают popup окна http://www.cs-cart.ru/docs/4.3.x/developer/solutions/templates/popup.html

В админке похожий принцип можно использовать. Ну и смотрите "Тест" в способах доставки. Очень простой пример.