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.