приложение сайт доступно по домен.su/site/
в /wa-apps/site/plugins/ajax/lib/actions
файл siteAjaxPluginFrontendMail.action.php
<?php
class siteAjaxPluginFrontendMailAction extends waViewAction
{
public function execute()
{
return "test";
}
}
в /wa-apps/site/plugins/ajax/lib/config
файл plugin.php
<?php
return array(
// обязательные параметры
'name' => 'Ajax',
'description' => 'ajax',
'version' => '1.0',
);
Что я упустил?
http://домен.su/site/?plugin=ajax&action=mail
получаю
Empty module and/or action after parsing the URL "/?module=site&plugin=ajax&action=mail" (frontend/mail).
Not found classes: shopFrontendMailController, shopFrontendMailAction, shopFrontendActions
Error with code 404 in '/home/billyboy/domains/billy-boy.su/public_html/wa-system/controller/waFrontController.class.php' around line 189:
184 if ($action && $default) {
185 return $this->execute($plugin, $module);
186 }
187
188 // Too bad. 404.
>>189 throw new waException(sprintf('Empty module and/or action after parsing the URL "%s" (%s/%s).<br />Not found classes: %s', $this->system->getConfig()->getCurrentUrl(), $module, $action,implode(', ',$class_names)), 404);
190 }
191 }
192
193 // EOF
1. Не создали файл routing.php чтобы можно было обращаться к нему с витрины?
2. http://домен.su/site/?plugin=ajax&action=mail такое обращение некорректно
3. Если используете waViewAction то должен быть и шаблон с выводом ответа. Поэтому лучше использовать waJsonController раз уж вы по ajax обращаетесь.
переделал. Сделал siteAjaxPluginFrontendMail.controller.php вместо siteAjaxPluginFrontendMail.action.php
С routing.php подскажите? Что в нем и где он?
В /wa-config/routing.php добавил:
обращаюсь к домен.su/ajax теперь другая ошибка:
1. Поселить "Сайт" в корень сайта: domain/*
2. В routing.php плагина добавить:
3. В плагине создать файл lib/actions/frontend/siteAjaxPluginFrontendMail.controller.php с классом siteAjaxPluginFrontendMailController.
4. Очистить кеш в Инсталлере (если не включен, а должен быть — на время разработки — режим отладки).
5. Отправлять AJAX-запрос по адресу domain.ru/ajax/.
А если нет возможности поселить "Сайт" в корень сайта: domain/* - будет работать по domain/site/ajax ? И надо ли при этом править routing.php
Где должен находится routing.php плагина?
Работать будет. Править routing.php не нужно, потому что в нём указываются URL плагина относительно URL поселения приложения. Главное в JavaScript-коде плагина учитывайте, что приложение может быть поселено не в корне, а в "подпапке", как в вашем последнем примере.
А где должен быть routing.php для плагина?
lib/config/ в папке плагина.
получаю
<h2 id="Title" style="font-family: 'Times New Roman'; line-height: normal;">Empty module and/or action after parsing the URL "/?plugin=ajax&action=mail" (frontend/mail).Not found classes: shopFrontendMailController, shopFrontendMailAction, shopFrontendActions</h2>
причем
<h2 style="font-family: 'Times New Roman'; line-height: normal;">Call stack</h2>почему-то waFrontController->execute('', 'frontend', 'mail') - не правильно подключен plugin? Почему он передает пустые кавычки?
7 кругов ада, что бы получить "hello world" по ajax
А почему
?
URL во фронтенде должен быть такой: domain.ru/ajax/
А ваш пример URL сработает только в бекенде, и файл routing.php в бекенде не нужен.
domain.ru/ajax/ дает 404
domain.ru/site/ajax/ тоже 404
В конфиге плагина plugin.php есть строка
?
/wa-apps/site/plugins/ajax/lib/config/routing.php
/wa-apps/site/plugins/ajax/lib/siteAjax.plugin.php
/wa-apps/site/plugins/ajax/lib/actions/siteAjaxPluginFrontendMail.controller.php
Кеш очищен?
И лишнее "extends" в последнем файле.
extends -дубль убрал
кеш вычищен, debug mode включен
Все равно 404
Проверяю так (в шапке сайта)
может тут ошибка, но в консоле вижу что запрос идет и получает 404
Либо вы с вами пропустили какую-то очевидную мелочь, либо это мистика... У меня нормально выплывает alert с [object Object].
Попробуйте создать всё заново, что ли — для чистоты эксперимента.
Залез в routing.php для site
добавил
работает
Вот только ответ странный:
Удалил /wa-apps/site/plugins/ajax/lib/config/routing.php
Теперь норм
Спасибо за время
В следующий раз обновите "Сайт", и всё поломается. Лучше так не делать, а разобраться, как сделать правильно.