How to access URL segment(s) in blade in Laravel 5?
Solution 1
Try this
{{ Request::segment(1) }}
Solution 2
The double curly brackets are processed via Blade -- not just plain PHP. This syntax basically echos the calculated value.
{{ Request::segment(1) }}
Solution 3
BASED ON LARAVEL 5.7 & ABOVE
To get all segments of current URL:
$current_uri = request()->segments();
To get segment posts
from http://example.com/users/posts/latest/
NOTE: Segments are an array that starts at index 0. The first element of array starts after the TLD part of the url. So in the above url, segment(0) will be users
and segment(1) will be posts
.
//get segment 0
$segment_users = request()->segment(0); //returns 'users'
//get segment 1
$segment_posts = request()->segment(1); //returns 'posts'
You may have noted that the segment method only works with the current URL ( url()->current()
). So I designed a method to work with previous URL too by cloning the segment()
method:
public function index()
{
$prev_uri_segments = $this->prev_segments(url()->previous());
}
/**
* Get all of the segments for the previous uri.
*
* @return array
*/
public function prev_segments($uri)
{
$segments = explode('/', str_replace(''.url('').'', '', $uri));
return array_values(array_filter($segments, function ($value) {
return $value !== '';
}));
}
Solution 4
Here is how one can do it via the global request
helper function.
{{ request()->segment(1) }}
Note: request()
returns the object of the Request
class.
Solution 5
An easy way to get the first or last segment, in case you are unsure of the path length.
$segments = request()->segments();
$last = end($segments);
$first = reset($segments);

code-8
I'm B, I'm a cyb3r-full-stack-web-developer. I love anything that is related to web design/development/security, and I've been in the field for about ~9+ years. I do freelance on the side, if you need a web project done, message me. ;)
Updated on July 25, 2022Comments
-
code-8 about 2 months
I have a url :
http://localhost:8888/projects/oop/2
I want to access the first segment -->
projects
I've tried
<?php echo $segment1 = Request::segment(1); ?>
I see nothing print out in my view when I refresh my page.
Any helps / suggestions will be much appreciated
-
code-8 about 7 yearsHow is it diff than what I have ? Just out of curiosity.
-
Benubird over 5 years@ihue it's not. Blade will internally convert "{{" into "<?php echo" and "}}" into ";?>". So it's exactly the same as what you are doing, and will work just the same.
-
Robin Bastiaan 3 monthsCan you give an example of when you would want to use the not escaped version? Also, be very careful with this! It is very easy for users with malicious intent to play with the url if you do.