2016-07-27 9 views
3

laravelの前のURLにアクセスします。私は私のコントローラでこのコードを使用しています。Laravel 5の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') }}のような前のURLにアクセスします。

私の前のURLの2番目のセグメントを見つける必要があります。あなたは、このようにそれを行うことができます おかげ

+0

2番目のセグメントはどういう意味ですか?あなたは例を挙げることができますか? – TheFallen

+0

www.example.com/segment1/segment2/12/114/122 - このセグメントが2つ必要です。 –

答えて

2

request()->segment(2); 

request()を照らし\のHttp \要求を返すヘルパー関数ですが、あなたはまた、ファサード要求を使用するかのようにクラスを注入することができますあなたのメソッドの依存関係。 (Requestクラスの中から)フードの下redirect()->back()->getRequest()->segment(2);

+0

'redirect() - > back() - > getTargetUrl()は、uramsをparams.needとともに返し、2番目のセグメントを抽出します。 –

+0

@ShakunChaudhary私の間違い、私はあなたが前のURLからセグメントをしたいことを理解していませんでした。私の編集を確認してください。 – TheFallen

+0

私はこの 'redirect() - > back() - > getRequest() - > segment(2)'を使用してターゲットURLからセグメントを必要とする.Itは、前のurlからではなく現在のurlのセグメントを与える。 –

0

、LaravelはURLのセグメントを取得するために、これらの二つのことをやっている:バックリダイレクトとEDIT

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 != ''; 
    })); 
} 
関連する問題