CodeIgniter - Контроллер вызывается из нескольких представлений, как перенаправить? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть контроллер, скажем Post, с функцией like(), которую можно вызывать из нескольких представлений.Например, я могу позвонить post/like/4 с временной шкалы (например, post/index) или из профиля пользователя (например, user/view/3).У меня возникают проблемы с редиректом после вызова контроллера, я не знаю, как обрабатывать различные возможности перенаправления. Я пытался использовать current_url(), но при вызове этого метода в контроллере, текущий URL-адрес post/like/4, поэтому он заканчиваетсяв бесконечном перенаправлении.

Есть ли способ сообщить контроллеру, какой URL-адрес вызвал его, и получить его для перенаправления на этот конкретный URL-адрес?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

То, что вы ищете, это "REFERER":

$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;

Обратите внимание: это не надежный метод.Я бы, вероятно, использовал сеанс var.

0 голосов
/ 02 июня 2018

Вы можете использовать URL реферера.Отметьте это https://www.codeigniter.com/user_guide/libraries/user_agent.html

$this->load->library('user_agent');
if ($this->agent->is_referral()){
  redirect($this->agent->referrer());
}

Как насчет этого?

redirect($_SERVER['HTTP_REFERER']);

Или вы можете передать следующий URL и перенаправить впоследствии

<a href="/post/like/4?next=current/url">Like</a>

nextUrl = isset($_GET['next']) ? $_GET['next'] : '/default/url';
redirect(nextUrl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...