2016-07-27 3 views
3

Für den Zugriff auf vorherige URL in Laravel. Ich verwende diesen Code in meinem Controller.Get URL-Segment in Laravel 5

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

Diese Methode hilft, die vorherige URL beizubehalten, auch wenn die serverseitige Validierung fehlschlägt. In meiner Klinge greife ich auf vorherige URL wie diese {{ Session::get('previous_url') }}.

Ich muss das zweite Segment meiner vorherigen URL finden. Dank

+0

Was meinst du mit dem zweiten Segment? Kannst du ein Beispiel geben? – TheFallen

+0

www.example.com/segment1/segment2/12/114/122 - Ich brauche dieses Segment 2 Sir in Laravel Weise, wenn es existiert. –

Antwort

2

Sie können es auf diese Weise tun:

request()->segment(2); 

request() ist eine Hilfsfunktion, die Illuminate \ Http \ Anfrage zurückliefert, aber Sie können auch die Fassade Anfrage oder injizieren, um die Klasse verwenden als eine Abhängigkeit in Ihrer Methode.

EDIT

mit der Umleitung zurück: redirect()->back()->getRequest()->segment(2);

+0

'redirect() -> zurück() -> getTargetUrl()' gibt URL mit params.need zurück, um das zweite Segment zu extrahieren. –

+0

@ShakunChaudhary mein Fehler, ich habe nicht verstanden, dass Sie das Segment von der vorherigen URL wollen. Bitte überprüfe meine Bearbeitung. – TheFallen

+0

Ich brauche Segment von Ziel-URL.Wenn ich diese 'redirect() -> zurück() -> getRequest() -> segment (2)'. Es gibt Segment der aktuellen URL nicht von vorherigen URL. –

0

Unter der Haube Laravel ist, diese beiden Dinge zu tun, um die Segmente von einer URL zu erhalten (von innerhalb der Anfrage-Klasse):

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 != ''; 
    })); 
} 

Sie könnten etwas ähnliches in einer Hilfsfunktion tun:

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 != ''; 
    })); 
}