Cách tạo bí danh url trong php
Trong đối số thứ hai của php artisan migrate2 ( php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"7) (nếu mảng - chỉ số đầu tiên) có thể là php artisan migrate4 hoặc thể hiện của php artisan migrate5 (như php artisan migrate6 Laravel helper) Trong đối số thứ hai của php artisan migrate3 ( php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider" 7) (nếu mảng - chỉ mục đầu tiên) có thể là php artisan migrate5 hoặc thể hiện của php artisan migrate6 (như php artisan migrate7 Laravel helper) Tôi muốn trình bày một gói https. //github. com/fomvasss/laravel-url-aliases cho khung Laravel, nhờ đó bạn có thể dễ dàng và nhanh chóng đặt bất kỳ URL nào cho các trang trên trang web của mình Nhưng trước đó, hãy xem xét một số vấn đề có thể phát sinh (hoặc đã phát sinh) với bạn khi thiết lập đường dẫn cho các trang của trang web Hãy xem xét một ví dụ đơn giản về một trang blog có bài viết, danh mục bài viết và trang tĩnh. Mọi thứ đều tốt ở đây, mọi thứ đều rõ ràng và đơn giản. Các trang trên trang web của chúng tôi sẽ có các URL sau Bài viết chuyên mục bài viết trang tĩnh Nhưng nếu chúng ta cần thay đổi cấu trúc của URL (hoặc chúng ta muốn một cái gì đó khác ngay từ đầu) thì sao? Chúng tôi thích URL dành cho bài viết không có tiền tố “bài viết”. Sẽ luôn có một nút chuyển sang ArticleController@show — ngay cả khi chúng tôi cần PageController@show Hoặc, ví dụ thứ hai từ vòng đời của một trang web đang chạy, chúng ta cần thay đổi tất cả các cách thành danh mục của trang web, ví dụ như thế này. https. //my-siêu-blog. com/categories/laravel Không có vấn đề, bạn nói. Tạo một tuyến đường mới Vâng, tùy chọn này không tệ, nhưng nếu chúng ta có thêm một chút lồng nhau thì sao? Giải pháp là như vậy. ( Tuy nhiên, tôi gần như quên mất, bạn cần thay đổi giao diện của URL của các trang bài viết thành điều này. Tuy nhiên, để hoàn toàn hạnh phúc, chúng tôi được thông báo rằng tên của tác giả trong URL của các trang của bài báo có thể không có, mà thay vào đó có thể là ngày tạo bài báo và có thể không … Cách tạo Thực tế, trong các ví dụ này, chúng tôi luôn muốn lấy một danh mục hoặc bài báo nào đó — một ví dụ của mô hình. Đối với điều này, https. //github. gói com/fomvasss/laravel-url-aliases đã được tạo Các tính năng và lợi ích chung
Để bắt đầu làm việc với gói, bạn phải cài đặt và định cấu hình Laravel, bạn sẽ tự làm việc này. php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"0 Sau khi cài đặt, xuất bản tài nguyên php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"1
Mọi thứ đều rõ ràng trong cấu hình, bạn có thể chỉ định mô hình cho bí danh, mẫu đường dẫn nơi bí danh sẽ không được sử dụng, ví dụ: cho bảng quản trị, chuyển hướng và phương thức Bắt đầu di chuyển php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"2 Để sử dụng trong các mô hình của bạn, hãy kết nối đặc điểm. “Fomvasss\UrlAliases\Traits\ UrlAliasable”
Ngoài ra, đừng quên sử dụng “with('urlAlias')" khi truy xuất các bộ sưu tập mô hình Trong ứng dụng/Mô hình/Bài viết. php Hầu hết mọi thứ, bạn chỉ cần thêm vào http/Kernel. php “\Fomvasss\UrlAliases\Middleware\UrlAliasMiddleware. lớp" Bây giờ chúng ta thiết lập các tuyến đường (trong routes/web. php) — ví dụ, hãy đưa chúng vào nhóm “hệ thống” — chỉ để thuận tiện Hãy giữ bài viết đầu tiên (app/Http/Controllers/ArticleController. php) Trong ‘system_path’ — chúng tôi viết địa chỉ hệ thống của bài viết, chỉ có đường dẫn. không có miền và thêm ‘/’ Chỉ cần nghĩ, loại tuyến đường nào nên được đặt cho các địa chỉ như vậy. ) Hãy đi đến trang của tất cả các bài viết Trong blade-template, chúng ta có thể sử dụng các cách khác nhau để hiển thị các liên kết đến bài viết của mình Hàm route_alias() trả về bí danh url (nếu không tồn tại — trả về đường dẫn hệ thống, ví dụ: http. //Địa điểm. com/system/article/13) và có giao diện giống như tiêu chuẩn trong Laravel route () — chỉ khi bạn cần một thực thể bí danh — bạn phải chuyển đối số thứ hai là một thể hiện của một mô hình (instanceof\Illuminate\Database\Eloquent Như trước đây, bạn cũng có thể sử dụng route() — nhưng các liên kết trên trang web sẽ có chế độ xem hệ thống và sẽ kích hoạt chuyển hướng 301 mặc định tới một bí danh khi bạn truy cập các liên kết này Đôi khi bạn cần hiển thị địa chỉ hiện tại trên trang, để làm điều này, bạn có thể sử dụng hàm trợ giúp url_alias_current() hoặc lệnh @urlAliasCurrent() của blade |