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.
Trước đây, chúng ta cần tạo các tuyến đường như thế này [trong tệp routes/web. tệp php].
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”.
Nhưng, như bạn đã biết, trong Laravel [và thực tế là ở những người khác, có lẽ], không có cách nào dễ dàng để chỉ định thư mục gốc trong biểu mẫu.
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
Nhưng bạn cần phải làm điều này.
https. //my-siêu-blog. com/web-lập trình/frameworks/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.
https. //my-siêu-blog. com/it-test-article-name/it-author-article-name. ]
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.
Vậy tại sao chúng ta không lưu url mong muốn [hay đúng hơn là chỉ lưu đường dẫn url] vào cơ sở dữ liệu và thực hiện các định tuyến chúng ta muốn [như thường lệ trong Laravel — thậm chí là các rest-path đơn giản
Đố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- đặt URL cho nội dung của bạn mà không cần suy nghĩ về cách xác định các tuyến đường
- trong hệ thống [ví dụ: trong route/web. php]
- duy trì cách tiếp cận tiêu chuẩn để tạo một hệ thống các tuyến đường và bộ điều khiển trong Laravel — chúng chỉ đơn giản trở thành “hệ thống”
- không có sên và biểu thức dài trong các tuyến - trong các tuyến "hệ thống" chỉ sử dụng 'id' là những gì bạn thích
- lưu trữ tất cả các đường dẫn url trong bảng cơ sở dữ liệu
- khả năng tạo chuyển hướng [301, 302]
- bây giờ không có vấn đề gì khi hỏi ví dụ trên một trang web cho hai thực thể khác nhau với các mô hình khác nhau về đường dẫn của một mẫu
- phương thức xuất và xây dựng bí danh url-s
Để 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.
Cài đặt gói là tiêu chuẩn, thông qua Composer.
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
- Configs [url-bí danh. php]
- di cư
- Máy gieo hạt thử nghiệm — chỉ để làm ví dụ
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”
Sau đó, bạn sẽ có sẵn các phương thức sau.
- urlAlias[] — trả về mô hình bí danh
- urlAliases[] — trả về bí danh mô hình của mô hình của bạn — hiếm khi được sử dụng
- urlA[] — trả về đường dẫn bí danh [được tìm thấy đầu tiên] — hiếm khi được sử dụng
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 ‘/’
Trong ‘aliased_path’, chúng tôi viết bất kỳ chuỗi nào duy nhất cho trường này [trong phạm vi lý do], chẳng hạn. “bí danh đầu tiên của tôi/cho/bài viết của tôi/30/10/2018/bla/bla/bla”
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