在Laravel 5中获取URL段

时间:2016-07-27 05:57:52

标签: php laravel laravel-5

用于访问laravel中的上一个URL。我在我的控制器中使用此代码。

$current_url = Request::url();
$back_url = redirect()->back()->getTargetUrl();
if ($current_url != $back_url) {
  Session::put('previous_url', redirect()->back()->getTargetUrl());
}

即使服务器端验证失败,此方法也有助于维护以前的URL。 在我的刀片中,我访问了以前的网址{{ Session::get('previous_url') }}

我需要找到我之前网址的第二部分。 感谢

2 个答案:

答案 0 :(得分:3)

你可以这样做:

request()->segment(2);

request()是一个帮助函数,它返回 Illuminate \ Http \ Request ,但你也可以使用facade Request 或者将类作为依赖项注入你的方法。

修改

重定向:redirect()->back()->getRequest()->segment(2);

答案 1 :(得分:0)

在幕后,Laravel正在做这两件事来获取url的片段(来自Request类):

public function segment($index, $default = null)
{
    return Arr::get($this->segments(), $index - 1, $default);
}

public function segments()
{
    $segments = explode('/', $this->path());

    return array_values(array_filter($segments, function ($v) {
        return $v != '';
    }));
}

你可以在辅助函数中做类似的事情:

public function segment($url, $index, $default)
{
    return Arr::get($this->segments($url), $index - 1, $default);
}


public function segments($url)
{
    $segments = explode('/', $url);

    return array_values(array_filter($segments, function ($v) {
        return $v != '';
    }));
}