frost18
@frost18
Программист PHP

Как в Yii обработать ajax запрос виджета самим виджетом?

Выношу повторяющиеся блоки в виджеты в своем проекте, часть из них обменивается информацией по средствам ajax запросов. Возник вопрос как можно функционал обработки ajax запросов перенести из контроллеров в виджет, что бы он был полностью самостоятельным и независимым?
  • Вопрос задан
  • 3801 просмотр
Пригласить эксперта
Ответы на вопрос 2
frost18
@frost18 Автор вопроса
Программист PHP
Пока придумал такое решение. Создал один контроллер Widget, и через него запускаю метод виджета.
К примеру ajax запрос будет уходить на www.site.ru/widget/index?widget=rating&method=recalc Обрабатывать будет его метод ajaxRecalc виджета Rating
class WidgetController extends Controller{

    public function actionIndex($widget, $method){

        Yii::import('application.extensions.'.$widget.'.'.$widget);

        $obj = new $widget();

        $method = 'ajax'.$method;

        if(!method_exists($obj, $method)){

            throw new CHttpException(500);
        }

        $obj->$method();
    }

    public function filterInit($filterChain){

        if(!Is::ajax()){

            throw new CHttpException(500);
        }

        $filterChain->run();
    }

    public function filters(){

        return array('init');
    }
}
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
ajax нужен когда надо обратиться к контролеру из браузера пользователя без перезагрузки страницы. А из виджета в виджет надо лазить средствами php.
Или вы не совсем точно расписали свои задачи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы