[РЕШЕНО] Как сделать редирект в контроллере?

Вопрос в названии. Проблема в том, что иногда! Это работает а иногда нет. От чего зависит?
Вот 2 варианта, оба не работают.

return array(CONTROLLER_STATUS_OK, $return_url);
return array(CONTROLLER_STATUS_REDIRECT, $return_url);

Согласно документации должно работать. Подробнее излагайте что делаете и где применяете редирект.

Есть контроллер модуля, к нему идет обращение ajax. Выполняются задачи, возвращается результат. Все ок. Но, при выполнении задачи стоит условие, оно срабатывает и там редирект. Но он не происходит. ajax делает post запрос.

Я конечно, при обработке ajax без проблем могу сделать редирект. Но я хочу понять почему база не работает?

В доках только это: if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {

if ($mode == 'update') {
    // [mode_name] — update
}

if ($mode == 'delete') {
    // [mode_name] — delete
}

return array(CONTROLLER_STATUS_OK, "[redirect_url]");

}

Все сделано…

К примеру redirect_url содержит контроллер products и мод update Распечатайте fn_print_r($_REQUEST) в файле controllers/products.php в блоке $mode == ‘update’ (в GET секции кода). Проверьте результат в консоли. Если $_REQUEST выведен в консоли то редирект срабатывает.
Еще можно перед return array(CONTROLLER_STATUS_OK, $redirect_url); добавить fn_print_r($redirect_url) чтобы убедиться что fn_print_r($_REQUEST) добавили правильно.

При аяксе редирект вот так делается

Tygh::$app['ajax']->assign('force_redirection', fn_url($redirect_url));
exit();

В вашем случае редирект делается в фоне, пользователь этого не увидит

3 лайка