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