Giới thiệu
Chào bạn! Trong quá trình phát triển web, đặc biệt là với Laravel, việc lấy các phần của đường dẫn URL có thể cực kỳ hữu ích – từ việc điều hướng (routing), xử lý tham số động cho đến phân tích dữ liệu. Laravel cung cấp một cách rất "Laravel-style" để lấy các segment của URL thông qua lớp Request.
Trong bài viết này, CodeTutHub sẽ hướng dẫn bạn cách lấy các segments trong URL bằng nhiều cách khác nhau, kèm theo ví dụ dễ hiểu và có tính thực tiễn cao và dễ hiểu.
URL Segment là gì?
URL segment là phần của URL được phân tách bằng dấu gạch chéo /. Ví dụ:
https://yourdomain.com/blog/laravel/url-segmentThì các segments sẽ là:
blog(Segment 1)laravel(Segment 2)url-segment(Segment 3)
Cách 1: Dùng Request::segment()
Class Request trong Laravel cung cấp phương thức segment() để lấy một segment cụ thể trong URL.
Cú pháp
$request->segment($index);Ví dụ
Giả sử bạn có URL sau:
https://yourdomain.com/products/electronics/123Bạn có thể lấy từng phần như sau:
use Illuminate\Support\Facades\Request;
$first = Request::segment(1); // products
$second = Request::segment(2); // electronics
$third = Request::segment(3); // 123Lưu ý: chỉ số bắt đầu từ 1 chứ không phải 0.
Cách 2: Dùng phương thức segments()
Nếu bạn muốn lấy tất cả các segment dưới dạng array, hãy dùng phương thức segments().
Ví dụ
use Illuminate\Support\Facades\Request;
$segments = Request::segments();
foreach ($segments as $key => $segment) {
echo "Segment " . ($key + 1) . ": " . $segment . "<br>";
}Kết quả với URL https://yourdomain.com/blog/laravel/8 sẽ là:
Segment 1: blog
Segment 2: laravel
Segment 3: 8Mở rộng: Lấy segment trong Controller
Bạn cũng có thể sử dụng các phương thức này ngay trong controller:
public function show()
{
$segment = request()->segment(2); // hoặc Request::segment(2);
return view('example')->with('segment', $segment);
}Lấy URL Segment trong blade template
Khi bạn muốn lấy các phần của URL ngay trong file blade (.blade.php), Laravel cũng hỗ trợ rất đơn giản nhờ vào hàm request().
Ví dụ:
{{-- Lấy segment đầu tiên của URL --}}
@php
$segment1 = request()->segment(1);
@endphp
<p>Segment 1: {{ $segment1 }}</p>Hoặc, nếu bạn muốn kiểm tra điều kiện trong Blade:
@if(request()->segment(1) === 'blog')
<p>Đang ở trang blog!</p>
@endif- Bạn có thể dùng
request()->segment(n)ngay trong@php, trong điều kiện@if, hoặc để in ra trong{{ }}. - Dữ liệu này có thể dùng để hiển thị điều hướng (breadcrumb), đánh dấu menu đang active, hoặc xác định nội dung hiển thị.
⚠️ Các lưu ý quan trọng
- Chỉ số segment bắt đầu từ 1
- Có thể dùng trong middleware, controller, view, hoặc service provider
- Nếu segment không tồn tại,
Request::segment()sẽ trả vềnull
📚 Kết luận
Việc lấy URL segment trong Laravel rất đơn giản, sạch sẽ và cực kỳ hữu dụng. Dù bạn đang xây dựng API, tạo route thân thiện SEO hay xử lý dữ liệu từ URL, Request::segment() và segments() là những công cụ không thể thiếu trong túi đồ lập trình Laravel của bạn.
Cảm ơn bạn đã xem bài viết, chúc bạn thành công!









