Недавно занялся изучением icms2 и пока не разобрался во всех тонкостях новой системы. Есть одна задачка — желательно решить.
Создаю виджет не привязанный к контролам. В system\widjets создал папку виджета. В этой папке создал widjet.php. Подскажите, пожалуйста, где в каких файлах записать обработчик ajax-запросов и как вызвать из тела виджета?
Подскажите, как использовать ajax в виджете
#1
6 июля 2016 в 11:05
#2
6 июля 2016 в 13:20
Виктор, для того, чтобы в виджете выполнить ajax запрос, необходим контроллер. Только обращаясь к нему, вы сможете выполнить запрос.
Виджеты не могут обрабатывать запросы. Т.е. в вашем случае:
— дополнить экшеном существующий контроллер
— написать свой, например с одним экшеном.
Виджеты не могут обрабатывать запросы. Т.е. в вашем случае:
— дополнить экшеном существующий контроллер
— написать свой, например с одним экшеном.
#3
31 июля 2016 в 20:39
Вынужден вернуться к вопросу.
Fuze, подскажите, пожалуйста схему использования ajax в instantcms-2.
Как я понимаю, во frontend контроллера нужно завести функцию actionWidget (так как вызов будет из виджета или темплейта виджета)
С помощью isAjax проверять тип запроса.
Каким образом осуществляется ajax-вызов из виджета?
Что-то типа
Fuze, подскажите, пожалуйста схему использования ajax в instantcms-2.
Как я понимаю, во frontend контроллера нужно завести функцию actionWidget (так как вызов будет из виджета или темплейта виджета)
С помощью isAjax проверять тип запроса.
Каким образом осуществляется ajax-вызов из виджета?
Что-то типа
... $.ajax({ type: "POST", url: "http://site.ru/controller", data: {mode:"mode", tag:"tag"} }).done(function( result ) { $("#msg").html( result ); }); ...
Сегодня в 08:31
#4
31 июля 2016 в 20:58
Нет. Экшен может иметь абсолютно любое название, главное чтобы оно было вам понятно. Например, из виджета вы хотите получать по кнопке подгрузку записей. Делаете в своем контроллере экшен с названием, например show_more, и в js к нему обращаетесь.Как я понимаю, во frontend контроллера нужно завести функцию actionWidget (так как вызов будет из виджета или темплейта виджета)
... $.ajax({ type: "POST", url: "/controllername/show_more", data: {param:"bar", param2:"bar2"} }).done(function( result ) { $("#msg").html( result ); }); ...
#5
31 июля 2016 в 21:28
Ясно, спасибо большое!!!