【问题标题】:CodeIgniter - Controller called from multiple views, how to redirect?CodeIgniter - 从多个视图调用的控制器,如何重定向?
【发布时间】:2018-06-02 06:30:28
【问题描述】:

我有一个控制器,比如说 Post,它有一个可以从多个视图调用的函数 like()。例如,我可以从时间线(例如post/index)或从用户配置文件(例如user/view/3)调用post/like/4。我在调用控制器后遇到重定向问题我不知道如何处理不同的重定向可能性。我尝试使用current_url() 但是在控制器中调用此方法时,当前 url 是post/like/4 所以它结束了在无限重定向中。

有没有办法告诉控制器调用它的 URL 并获取它以便重定向到这个特定的 URL?

感谢您的帮助。

【问题讨论】:

标签: php codeigniter


【解决方案1】:

您正在寻找的是“REFERER”:

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

请注意:这不是万无一失的方法。我可能会使用会话变量。

【讨论】:

  • 我没有使用会话,而是使用 cookie,所以这就是我遇到问题的原因,但它似乎有效,谢谢!
【解决方案2】:

您可以使用引荐来源网址。检查这个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);

【讨论】:

  • 使用 redirect($this->agent->referrer()) 只会将我带到帖子/喜欢/ID,并不会让我回到我调用它的位置(帖子/索引)。
  • 但是使用重定向($_SERVER['HTTP_REFERER']);似乎对我有用!非常感谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多