Можно ли задать путь для всех запросов AJAX веб-интерфейса - PullRequest
0 голосов
/ 18 ноября 2018

Мои слизни выглядят так:

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '<lang>/<p_page>/<p_category>/<p_product>' => 'splitter/manage-request',
                '<lang>/<p_page>/<p_category>' => 'splitter/manage-request',
                '<lang>/<p_page>' => 'splitter/manage-request',
                '<lang>/' => 'splitter/manage-request',
                '<lang>' => 'splitter/manage-request',
                '' => 'splitter/manage-request',
            ],
        ],

Я отправляю все запросы на тот SplitterController, где я их анализирую. Но я не хочу, чтобы AJAX отправлялись на него. Можно ли дать им какой-нибудь маршрут по умолчанию? Для перенаправления их бэкэнд например. Я не мог найти информацию об этом в документации? Оценивая ссылки также я пропустил это. Спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Согласно моему опыту, для вашей справки, вероятно, есть следующие варианты:

first: Самый простой способ - добавить beforeAction () в SplitterController, определить, является ли он запросом ajax в beforeAction.() и перенаправьте на целевой адрес, например:

public function beforeAction() 
{
    if (\Yii::$app->request->isAjax) {
        return \Yii::$app->response->redirect($targetUrl);
    }
    return parent::beforeAction($action);
}

секунда: вы можете проверить, является ли запрос ajax-запросом в конфигурации nginx, а затем перенаправить на целевой адрес

* 1007.* третий: если вы не можете установить дополнительные правила маршрутизации и настроить адрес запроса ajax, то вы можете рассмотреть возможность его реализации, настроив UrlManager :: parseRequest (), просто проверьте, является ли он запросом ajax, прежде чем он начнет анализировать запрос,затем перенаправить на вашу цель.адрес

Этот ответ переведен с Google Translate

...