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.