AJAX с Frontend в экшн или контроллер
Прочитал все имеющиеся статьи на форме и документацию, но так и не понял, что могу делать не так.
https://developers.webasyst.ru...
https://developers.webasyst.ru...
https://developers.webasyst.ru...
Шаг 1. Создал файл wa-apps/shop/plugins/cartsmanager/lib/config/plugin.php
<?php
return array(
'name' => 'Carts Manager',
'img' => 'images/icon.png',
'version' => '0.0.1',
'rontend' => true,
);
Шаг 2. Добавил в файл: wa-apps/shop/plugins/cartsmanager/lib/config/routing.php
<?php
return array(
'cartsmanager/incart/' => array(
'plugin' => 'cartsmanager',
'module' => 'frontend',
'action' => 'incart',
),
);
Шаг 3. Создал файл: wa-apps/shop/plugins/cartsmanager/lib/actions/frontend/shopCartsmanagerPluginFrontendCart.action.php
<?php
class shopCartsmanagerPluginFrontendCartActions extends waJsonActions
{
public function incartAction()
{
$this->response = array(
'valA' => 'value first',
'valB' => 'velue second',
);
}
}
Шаг 4. Пытаюсь получить данные так:
<script>
$.getJSON({$wa->getUrl('shop/frontend/incart', ['plugin' => 'cartsmanager'])}, function (json) {
alert(json.data.valA);
});
</script>
Получаю ошибку 404 из-за того, что это:
{$wa->getUrl('shop/frontend/incart', ['plugin' => 'cartsmanager'])}
не отрабытавает, как я ожидаю и возвращает почему-то: "/"
Попытался написать прямой путь:
<script>
$.getJSON('/cartsmanager/incart/', function (json) {
alert(json.data.valA);
});
</script>
Также выдает ошибку 404:

Эта тема в архиве. Добавление комментариев к ней отключено.










8 ответов
Может правильнее писать роутинг через хук?
https://developers.webasyst.ru...
Имя класса должно быть shopCartsmanagerPluginFrontendActions — идентификатор модуля ведь 'frontend':
return array( 'cartsmanager/incart/' => array( 'plugin' => 'cartsmanager', 'module' => 'frontend', // ← ← ← 'action' => 'incart', ), );Большое вам спасибо!
Поправил этот момент, но ошибка остается (((
Эта штука:
$wa->getUrl('shop/frontend/incart', ['plugin' => 'cartsmanager']выдает: "/my/" - это же неправильно?
Получается, что этот роут не находит:
return array( 'cartsmanager/incart/' => array( 'plugin' => 'cartsmanager', 'module' => 'frontend', 'action' => 'incart', ), );Еще так пробовал:
$route_params = array( 'module' => 'frontend', 'plugin' => 'cartsmanager', 'action' => 'incart', ); var_dump(wa()->getRouteUrl('shop', $route_params)); // "/my/"Шаг 1, опечатка.
'frontend' => true,
Спасибо большое Николай!
Это уже тут я допустил опечатку, когда при редактировании пришлось удалять лишние символы, немного криво работает визуальный редактор тут, на сервере написано правильно.
Благодарен вам за ваше время ?
Ну если всё верно, но ничего не работает, то возможно вы не чистите кэш фрэймворка? Правила "роутинга" кэшируются.
Лень расписывать все косяки, сделайте по аналогии
роутинг
return [ 'cartssave/' => 'frontend/save', ];контроллер
class shopCartsPluginFrontendSaveController extends waJsonController { public function execute() { } }ссылка
$wa->getUrl('shop/frontend/save', ['plugin'=>'carts'])