Bước 1: Định nghĩa Route
Mở file routes/web.php
và thêm các route tương ứng. Bạn có thể sử dụng các tham số động trong route để định nghĩa cấu trúc URL như sau:
use App\Http\Controllers\ArticleController;
// Route cho 5 tham số
Route::get('{param1}/{param2}/{param3}/{param4}/{param5}-a{num}.html', [ArticleController::class, 'view'])
->name('articles.view');
// Route cho 4 tham số
Route::get('{param1}/{param2}/{param3}/{param4}-a{num}.html', [ArticleController::class, 'view'])
->name('articles.view');
// Route cho 3 tham số
Route::get('{param1}/{param2}/{param3}-a{num}.html', [ArticleController::class, 'view'])
->name('articles.view');
// Route cho 2 tham số
Route::get('{param1}/{param2}-a{num}.html', [ArticleController::class, 'view'])
->name('articles.view');
// Route cho 1 tham số
Route::get('{param1}-a{num}.html', [ArticleController::class, 'view'])
->name('articles.view');
Bước 2: Tạo Controller
Nếu bạn chưa có controller, tạo một controller cho bài viết bằng lệnh Artisan:
php artisan make:controller ArticleController
Trong ArticleController.php
, bạn có thể định nghĩa phương thức view
để xử lý yêu cầu:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function view($param1, $param2 = null, $param3 = null, $param4 = null, $param5 = null, $num = null)
{
// Thực hiện logic để lấy bài viết dựa trên các tham số
// Ví dụ, bạn có thể truy vấn bài viết từ cơ sở dữ liệu dựa trên các tham số này
// Trả về view với bài viết
return view('articles.view', compact('param1', 'param2', 'param3', 'param4', 'param5', 'num'));
}
}
Bước 3: Tạo View
Tạo view resources/views/articles/view.blade.php
để hiển thị bài viết:
@extends('layouts.app')
@section('content')
<h1>Article View</h1>
<p>Param 1: {{ $param1 }}</p>
<p>Param 2: {{ $param2 }}</p>
<p>Param 3: {{ $param3 }}</p>
<p>Param 4: {{ $param4 }}</p>
<p>Param 5: {{ $param5 }}</p>
<p>Num: {{ $num }}</p>
@endsection
Bước 4: Tạo URL
Khi bạn muốn tạo URL cho bài viết, bạn có thể sử dụng hàm route()
trong Blade hoặc controller của bạn. Ví dụ:
<a href="{{ route('articles.view', ['param1' => 'category', 'param2' => 'sub-category', 'param3' => 'article-title', 'num' => 1]) }}">
Xem bài viết
</a>
Kết quả
Với cấu hình này, bạn sẽ có thể tạo ra các URL đa cấp tùy ý cho bài viết, ví dụ:
/category/sub-category/article-title-a1.html
Ghi chú
- Các tham số trong route có thể được sử dụng theo bất kỳ thứ tự nào và bạn có thể làm cho một hoặc nhiều tham số là tùy chọn.
- Đảm bảo kiểm tra và xử lý các tham số trong phương thức
view()
để thực hiện các logic như truy vấn bài viết hoặc xử lý các tham số tùy chọn.
- Nếu bạn muốn tạo URL cho bài viết dựa trên ID hoặc slug, bạn có thể thay thế các tham số tương ứng trong route.