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
Try this
{{ Request::segment(1) }}
The double curly brackets are processed via Blade -- not just plain PHP. This syntax basically echos the calculated value.
{{ Request::segment(1) }}
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.
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 ie starts from 0 and are a section of the uri
after the base url(hppt://example.com)*/
//assuming current url == http://example.com/users/posts/latest/
//get segment 0
$segment_users = request()->segments(0);//returns 'users'
//get segment 1
$segment_posts = request()->segments(1);//returns 'posts'
You may have noted that the segment(s) method only works with the current URL ( url()->current()
) so I did design a small method to work with previous URL too by cloning the segments()
method:
public function index()
{
....
$prev_uri_segments = $this->prev_segments(url()->previous());//array
}
/**
* 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 !== '';
}));
}
Here is code you can get url segment.
{{ Request::segment(1) }}
If you don't want the data to be escaped then use {!! !!} else use {{ }}.
{!! Request::segment(1) !!}
来源:https://stackoverflow.com/questions/31832819/how-to-access-url-segments-in-blade-in-laravel-5