Использование ajax в виджете

Подскажите, как использовать ajax в виджете

 
Посетитель
small user social cms
Медаль
Сообщений: 763
Недавно занялся изучением icms2 и пока не разобрался во всех тонкостях новой системы. Есть одна задачка - желательно решить.
Создаю виджет не привязанный к контролам. В system\widjets создал папку виджета. В этой папке создал widjet.php. Подскажите, пожалуйста, где в каких файлах записать обработчик ajax-запросов и как вызвать из тела виджета?
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4574
Виктор, для того, чтобы в виджете выполнить ajax запрос, необходим контроллер. Только обращаясь к нему, вы сможете выполнить запрос.
Виджеты не могут обрабатывать запросы. Т.е. в вашем случае:
- дополнить экшеном существующий контроллер
- написать свой, например с одним экшеном.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 763
Вынужден вернуться к вопросу.
Fuze, подскажите, пожалуйста схему использования ajax в instantcms-2.
Как я понимаю, во frontend контроллера нужно завести функцию actionWidget (так как вызов будет из виджета или темплейта виджета)
С помощью isAjax проверять тип запроса.
Каким образом осуществляется ajax-вызов из виджета?
Что-то типа
Код PHP:
  1. ...
  2. $.ajax({
  3. type: "POST",
  4. url: "http://site.ru/controller",
  5. data: {mode:"mode", tag:"tag"}
  6. }).done(function( result )
  7. {
  8. $("#msg").html( result );
  9. });
  10. ...
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4574
Виктор:
Как я понимаю, во frontend контроллера нужно завести функцию actionWidget (так как вызов будет из виджета или темплейта виджета)
Нет. Экшен может иметь абсолютно любое название, главное чтобы оно было вам понятно. Например, из виджета вы хотите получать по кнопке подгрузку записей. Делаете в своем контроллере экшен с названием, например show_more, и в js к нему обращаетесь.
Код PHP:
  1. ...
  2. $.ajax({
  3. type: "POST",
  4. url: "/controllername/show_more",
  5. data: {param:"bar", param2:"bar2"}
  6. }).done(function( result )
  7. {
  8. $("#msg").html( result );
  9. });
  10. ...
С помощью isAjax да, вы проверяете тип запроса, главное в конце экшена работа должны завершаться через die; или т.п. А например с помощью isAjax вы немного защищаетесь от прямого вызова. Или же с помощью isAjax вы можете разделить логику: если аякс запрос, то "умираете" в конце экшена, если нет, то рендерится страница целиком вместе с шаблоном. Кроме того, в движке методы шаблонизации автоматически проверяют тип запроса и сами "умирают" при аякс запросах.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
Медаль
Сообщений: 763
Ясно, спасибо большое!!!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.