Cách tạo bí danh url trong php

Trong đối số thứ hai của

php artisan migrate
2 [
php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"
7] [nếu mảng - chỉ số đầu tiên] có thể là
php artisan migrate
4 hoặc thể hiện của
php artisan migrate
5 [như
php artisan migrate
6 Laravel helper]

Trong đối số thứ hai của

php artisan migrate
3 [
php artisan vendor:publish --provider="Fomvasss\UrlAliases\ServiceProvider"
7] [nếu mảng - chỉ mục đầu tiên] có thể là
php artisan migrate
5 hoặc thể hiện của
php artisan migrate
6 [như
php artisan migrate
7 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

Chủ Đề