Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

Laravel đã thống trị bối cảnh khung web PHP trong nhiều năm nay. Nếu bạn xây dựng các trang web PHP tùy chỉnh, rất có thể bạn đã sử dụng khung này một hoặc hai lần và biết rằng bản cập nhật Laravel sẽ xuất hiện sáu tháng một lần

Show

Laravel v9 được phát hành vào ngày 8 tháng 2 năm 2022 và nó cung cấp nhiều tính năng mới

Lịch sử phát hành của Laravel

Mặc dù các bản phát hành trước đây của Laravel diễn ra sáu tháng một lần, nhưng chu kỳ phát hành mới trong tương lai sẽ là 12 tháng một lần, điều này đảm bảo bản phát hành đồng bộ với Symfony — mà Laravel sử dụng ở hậu trường — và cho phép nhóm phát triển có thêm thời gian để sửa bất kỳ lỗi nào xảy ra

Dưới đây là bảng phân tích về các bản phát hành Laravel gần đây nhất và sắp tới

Phiên bản Phiên bản PHPReleaseSửa lỗi cho đến khi Bảo mật được sửa Cho đến khi6 (LTS)7. 2 – 8. 0Ngày 3 tháng 9 năm 2019Ngày 25 tháng 1 năm 2022Ngày 6 tháng 9 năm 202277. 2 – 8. Ngày 3 tháng 3 năm 2020 Ngày 6 tháng 10 năm 2020 Ngày 3 tháng 3 năm 202187. 3 – 8. 1 Ngày 8 tháng 9 năm 2020 Ngày 26 tháng 7 năm 2022 Ngày 24 tháng 1 năm 20239 (LTS)8. 0 – 8. 1 ngày 8 tháng 2 năm 2022 ngày 8 tháng 2 năm 2024 ngày 8 tháng 2 năm 2025108. 0 – 8. 1 Ngày 7 tháng 2 năm 2023 Ngày 7 tháng 8 năm 2024 Ngày 7 tháng 2 năm 2025

Bạn có thể thấy phiên bản 9 là phiên bản mới hỗ trợ dài hạn, thay thế cho phiên bản 6 sẽ không còn được hỗ trợ vào cuối năm nay. Kể từ tháng này, v7 hoàn toàn không còn được hỗ trợ, vì vậy nếu bạn đang sử dụng Laravel 6 hoặc 7, đã đến lúc nâng cấp lên v9

Có gì mới trong Laravel 9?

Trong bài viết này, chúng tôi sẽ đề cập đến những thay đổi lớn hiện tại trong Laravel 9, nhưng hy vọng sẽ sớm thấy nhiều tính năng và thay đổi hơn

PHP 8 là yêu cầu tối thiểu

Laravel sử dụng Symfony 6, yêu cầu ít nhất PHP 8. PHP 8 đi kèm với trình biên dịch just-in-time (JIT) mới, tiện ích mở rộng OPcache, các đối số được đặt tên, v.v.

Symfony Mailer đã thay thế Swift Mailer

Swift Mailer, đã được sử dụng trong Laravel trong nhiều năm, đang bị xóa và sẽ không còn được duy trì. Trong Laravel v9 và các bản phát hành trong tương lai, bạn sẽ phải sử dụng Symfony Mailer. Nếu bạn đang nâng cấp một phiên bản Laravel hiện có, hãy xem hướng dẫn nâng cấp

Nhóm tuyến điều khiển

Bây giờ bạn có thể sử dụng phương thức

$table->text('content')->fullText();
2 của lớp Laravel 9
$table->text('content')->fullText();
3 để xác định bộ điều khiển sẽ được sử dụng cho mọi tuyến đường trong một nhóm tuyến đường

use App\Http\Controllers\PostController;

Route::controller(PostController::class)->group(function () {
    Route::get('/post/{id}', 'show');
    Route::post('/post', 'store');
});

Trình truy cập và trình biến đổi tốt hơn trong Eloquent

Trong Laravel 9, giờ đây bạn có thể sử dụng

$table->text('content')->fullText();
4 để khai báo tiền tố mô hình với một thuật ngữ không có tiền tố. Sử dụng một lệnh gọi phương thức, giờ đây bạn có thể nhận và đặt thuộc tính

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}

$table->text('content')->fullText(); 5 chỉ mục và mệnh đề where

Nếu bạn đang sử dụng MySQL hoặc PostgreSQL trong ứng dụng Laravel của mình, giờ đây bạn có thể sử dụng phương thức

$table->text('content')->fullText();
6 trên các định nghĩa cột trong tệp di chuyển của mình để tạo chỉ mục toàn văn

$table->text('content')->fullText();

Sau đó, bạn có thể sử dụng các phương thức

$table->text('content')->fullText();
7 và
$table->text('content')->fullText();
8 để thêm mệnh đề where toàn văn vào truy vấn của mình

$table->text('content')->fullText();
0

Công cụ cơ sở dữ liệu Scout mới

Laravel v9 xuất xưởng với công cụ cơ sở dữ liệu Laravel Scout mới. Nó cung cấp khả năng tìm kiếm toàn văn cho các mô hình Eloquent. Nó sử dụng các bộ quan sát mô hình để giữ cho các chỉ mục tìm kiếm đồng bộ với các bản ghi Eloquent và là một lựa chọn tốt cho các ứng dụng sử dụng cơ sở dữ liệu cỡ nhỏ hoặc trung bình hoặc có khối lượng công việc nhẹ. Công cụ này sẽ sử dụng mệnh đề “where-like” khi lọc kết quả từ cơ sở dữ liệu của bạn

Để sử dụng nó, chỉ cần thêm đặc điểm

$table->text('content')->fullText();
9 vào một mô hình

$table->text('content')->fullText();
2

Breeze API với Tiếp theo. js

Laravel v9 bao gồm một Next miễn phí. js triển khai giao diện người dùng trong bộ khởi động Breeze của nó. Bằng cách sử dụng giàn giáo bộ công cụ khởi động này, bạn có thể xây dựng các ứng dụng Laravel đóng vai trò là cả phụ trợ và giao diện người dùng JavaScript bằng cách sử dụng xác thực Laravel Sanctum

Inline Blade kết xuất

Nếu bạn cần chuyển đổi mẫu Blade thô thành HTML hợp lệ, giờ đây bạn có thể thực hiện điều đó với kết xuất Blade nội tuyến


Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

Hơn 200 nghìn nhà phát triển sử dụng LogRocket để tạo ra trải nghiệm kỹ thuật số tốt hơn

Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Tìm hiểu thêm →


$table->text('content')->fullText();
3

Giao diện trình tạo truy vấn mới

Giao diện trình tạo truy vấn mới trong Eloquent cho phép nhập các truy vấn Eloquent gợi ý. Trước đây, rất khó để biết liệu bạn đang xử lý ________ 100, ________ 101 hay ______ 102, khiến các nhà phát triển phải đoán xem cần khắc phục điều gì mỗi khi TypeError xuất hiện

$table->text('content')->fullText();
7

Ràng buộc định tuyến ngầm định với enums

Giờ đây, bạn có thể nhập các gợi ý bằng PHP enum trong định nghĩa định tuyến Laravel của mình. Sau đó, Laravel sẽ chỉ gọi route nếu route chứa enum hợp lệ trong URI và sẽ trả về 404 nếu không tìm thấy một trong các enum

$table->text('content')->fullText();
8

Tuyến này sẽ chỉ được gọi nếu tuyến

$table->text('content')->fullText();
03 khớp với một trong các enum

use App\Http\Controllers\PostController;

Route::controller(PostController::class)->group(function () {
    Route::get('/post/{id}', 'show');
    Route::post('/post', 'store');
});
0

Buộc ràng buộc lộ trình phạm vi

Giờ đây, Laravel 9 có thể tự động xác định phạm vi truy vấn để truy xuất mô hình lồng nhau bởi cha của nó trong định nghĩa tuyến đường bằng cách sử dụng các quy ước để đoán tên mối quan hệ của cha. Dưới đây là một ví dụ về việc sử dụng các ràng buộc phạm vi

use App\Http\Controllers\PostController;

Route::controller(PostController::class)->group(function () {
    Route::get('/post/{id}', 'show');
    Route::post('/post', 'store');
});
1

Bạn cũng có thể sử dụng các ràng buộc phạm vi trên một nhóm định nghĩa tuyến đường

use App\Http\Controllers\PostController;

Route::controller(PostController::class)->group(function () {
    Route::get('/post/{id}', 'show');
    Route::post('/post', 'store');
});
1

Chế độ xem phân trang Bootstrap 5

Nếu bạn đã từng thử viết mã phân trang của riêng mình, bạn sẽ biết điều đó không thú vị chút nào. Laravel 9 giúp việc thêm phân trang vào các trang trong ứng dụng của bạn trở nên đơn giản hơn với các chế độ xem phân trang Bootstrap 5

Tất cả những gì bạn phải làm là bao gồm

$table->text('content')->fullText();
04 và gọi phương thức
$table->text('content')->fullText();
05 của nó trong phương thức khởi động của lớp
$table->text('content')->fullText();
06 của ứng dụng của bạn

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
1

Người trợ giúp mới

Bây giờ Laravel đang sử dụng PHP 8, mặt tiền

$table->text('content')->fullText();
07 của nó sẽ sử dụng các hàm chuỗi PHP 8, đi kèm với một số phương thức mới, bao gồm
$table->text('content')->fullText();
08,
$table->text('content')->fullText();
09 và
$table->text('content')->fullText();
20. Những người trợ giúp mới bao gồm
$table->text('content')->fullText();
21 và
$table->text('content')->fullText();
22


Các bài viết hay khác từ LogRocket

  • Đừng bỏ lỡ một khoảnh khắc nào với The Replay, một bản tin được tuyển chọn từ LogRocket
  • Tìm hiểu cách Galileo của LogRocket loại bỏ tiếng ồn để chủ động giải quyết các sự cố trong ứng dụng của bạn
  • Sử dụng useEffect của React để tối ưu hóa hiệu suất ứng dụng của bạn
  • Chuyển đổi giữa nhiều phiên bản của Node
  • Khám phá cách tạo hoạt ảnh cho ứng dụng React của bạn với AnimXYZ
  • Khám phá Tauri, một khuôn khổ mới để xây dựng các tệp nhị phân
  • So sánh NestJS với. Thể hiện. js

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
2

Một trợ giúp khác đã được thêm vào là hàm

$table->text('content')->fullText();
23. Hàm này tạo phản hồi HTTP chuyển hướng cho một tuyến đường được đặt tên. Bạn có thể sử dụng nó để chuyển hướng đến các tuyến được đặt tên từ các tuyến và bộ điều khiển

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
3

Truyền thuộc tính Enum

Bây giờ bạn có thể chuyển các giá trị thuộc tính sang PHP enums trong Laravel 9. Dưới đây là một ví dụ về việc sử dụng phôi trong một mô hình

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
4

Sau khi bạn đã xác định phép truyền trong mô hình của mình, thuộc tính này sẽ tự động được truyền tới và từ enum

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
5

Đã kiểm tra và chọn các chỉ thị Blade

Tôi không biết mình đã tìm kiếm trên Google bao nhiêu lần, “Cách đặt hộp kiểm được chọn trong Laravel. ” Laravel v9 đã làm điều này dễ dàng hơn. Bây giờ bạn có thể sử dụng chỉ thị

$table->text('content')->fullText();
24 để đặt hộp kiểm là
$table->text('content')->fullText();
25. Nếu nó đánh giá là đúng, nó sẽ lặp lại
$table->text('content')->fullText();
25

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
6

Ngoài ra còn có một chỉ thị

$table->text('content')->fullText();
27 tương tự để thiết lập tùy chọn đã chọn trong một

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
7

Xác thực tốt hơn dữ liệu mảng lồng nhau

Lớp xác thực

$table->text('content')->fullText();
28 hiện có một phương thức
$table->text('content')->fullText();
29 mới chấp nhận một bao đóng sẽ chạy trên mỗi lần lặp của thuộc tính mảng đang được xác thực. Việc đóng sẽ trả về một mảng các quy tắc để gán cho phần tử mảng

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
8

Máy chủ tiếng vang Soketi

Laravel hiện đi kèm với máy chủ Soketi echo, một máy chủ WebSocket tương thích với Laravel Echo được viết cho Node. js. Đây là giải pháp thay thế mã nguồn mở cho Ably và Pusher dành cho các nhà phát triển muốn quản lý máy chủ WebSocket của riêng họ

Các trang ngoại lệ được cải thiện

Laravel 9 cũng có một trang ngoại lệ mới và cải tiến được thiết kế lại từ đầu. Bạn có thể chọn giữa các chủ đề sáng và tối, thậm chí nó còn có chức năng “mở trong trình chỉnh sửa”

Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

Sơ khai di chuyển ẩn danh

Di chuyển gốc ẩn danh hiện là hành vi mặc định khi bạn thực hiện di chuyển Laravel. Tính năng này đã có trong Laravel 8. 3, nhưng là mặc định trong Laravel v9. Tính năng này ngăn xung đột tên với các lớp di chuyển. Trước khi có thay đổi này, rất khó để tạo lại cơ sở dữ liệu từ đầu nếu bạn sử dụng lại tên lớp. Giờ đây, bạn sẽ không phải lo lắng về điều này

Danh sách tốt hơn các tuyến đường trong Artisan

Laravel đã có lệnh

$table->text('content')->fullText();
30 Artisan, nhưng giờ đây nó cung cấp phân tích tốt hơn, được mã hóa màu cho các tuyến đường trong ứng dụng của bạn

Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

hệ thống ruồi 3. x

Trong Laravel v9, Flysystem đã được di chuyển từ v1. x lên v3. x. Flysystem xử lý tất cả các chức năng thao tác tệp mà mặt tiền

$table->text('content')->fullText();
31 cung cấp. Một số thay đổi bạn sẽ thấy là

  • Các phương thức
    $table->text('content')->fullText();
    
    32,
    $table->text('content')->fullText();
    
    33 và
    $table->text('content')->fullText();
    
    34 hiện ghi đè lên các tệp hiện có theo mặc định
  • Các phương thức
    $table->text('content')->fullText();
    
    32,
    $table->text('content')->fullText();
    
    33 và
    $table->text('content')->fullText();
    
    34 không còn đưa ra ngoại lệ đối với lỗi ghi
  • Nếu bạn cố đọc một tệp không tồn tại, thì sẽ trả về
    $table->text('content')->fullText();
    
    38
  • Xóa một tệp không tồn tại hiện trả về
    $table->text('content')->fullText();
    
    39

Kiểm tra vùng phủ sóng

Lệnh Artisan

$table->text('content')->fullText();
70 hiện có tùy chọn
$table->text('content')->fullText();
71, tùy chọn này sẽ xuất tỷ lệ phần trăm phạm vi kiểm tra trong đầu ra CLI

Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

Không còn máy chủ. tập tin php

Không phải là thay đổi lớn nhất trong danh sách, nhưng bạn không còn cần tệp

$table->text('content')->fullText();
72 trong dự án của mình nữa. Bây giờ nó sẽ được bao gồm với phần còn lại của khung

Bắt đầu với Laravel v9

Nếu bạn đã sẵn sàng dùng thử phiên bản mới của Laravel, có một số cách bạn có thể thực hiện. Nếu bạn đã cài đặt trình soạn thảo, bạn có thể tạo một dự án Laravel mới với nó

use Illuminate\Database\Eloquent\Casts\Attribute;

public function username(): Attribute
{
  return new Attribute(
    get: fn ($value) => strtoupper($value),
    set: fn ($value) => $value,
  );
}
9

Bạn cũng có thể cài đặt Laravel trên toàn cầu với trình soạn thảo và sử dụng nó để tạo một dự án mới

$table->text('content')->fullText();
0

Nếu bạn có Docker Desktop trên máy Mac, bạn có thể chạy các lệnh này để khởi chạy hình ảnh Docker chạy Laravel 9

$table->text('content')->fullText();
1

Bạn có thể thay đổi

$table->text('content')->fullText();
73 thành bất cứ thứ gì bạn muốn. Lệnh cuối cùng sử dụng Laravel Sail, đây là giao diện dòng lệnh nhẹ để tương tác với cấu hình Docker của Laravel. Lần đầu tiên bạn chạy lệnh có thể mất vài phút. Sau đó, ứng dụng sẽ bắt đầu nhanh hơn

Trong Windows, bạn có thể chạy các lệnh tương tự ở trên trong phiên cuối mới trong hệ điều hành WSL2 Linux của mình. Các lệnh tương tự cũng hoạt động trong Linux — bạn chỉ cần cài đặt Docker Compose

Laravel 9 có đáng để chờ đợi thêm không? . Hiện tại có nhiều cải tiến và hơn thế nữa khi nhóm phát triển sẽ đẩy mạnh các tính năng mới trong phiên bản hiện tại. Nó cũng là phiên bản LTS mới, vì vậy nó sẽ xuất hiện trong một thời gian. Chúc may mắn với các ứng dụng Laravel 9 mới của bạn

Đăng NhậpTên Lửa. Khả năng hiển thị đầy đủ vào web và ứng dụng dành cho thiết bị di động của bạn

Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?
Vấn đề khi cố gắng thực hiện các tuyến đường trong Laravel 8 là gì?

LogRocket là một giải pháp giám sát ứng dụng giao diện người dùng cho phép bạn phát lại các sự cố như thể chúng đã xảy ra trong trình duyệt của chính bạn. Thay vì đoán tại sao xảy ra lỗi hoặc yêu cầu người dùng chụp ảnh màn hình và kết xuất nhật ký, LogRocket cho phép bạn phát lại phiên để nhanh chóng hiểu điều gì đã xảy ra. Nó hoạt động hoàn hảo với bất kỳ ứng dụng nào, bất kể khung công tác nào và có các plugin để ghi lại ngữ cảnh bổ sung từ Redux, Vuex và @ngrx/store

Ngoài việc ghi nhật ký các hành động và trạng thái Redux, LogRocket còn ghi nhật ký bảng điều khiển, lỗi JavaScript, dấu vết ngăn xếp, yêu cầu/phản hồi mạng với tiêu đề + nội dung, siêu dữ liệu trình duyệt và nhật ký tùy chỉnh. Nó cũng cung cấp công cụ cho DOM để ghi lại HTML và CSS trên trang, tạo lại các video hoàn hảo về pixel của ngay cả các ứng dụng dành cho thiết bị di động và trang đơn phức tạp nhất

Làm cách nào để xác định các tuyến đường trong Laravel 8?

Các tuyến đường được định nghĩa trong Laravel bằng cách sử dụng lớp Tuyến đường với một động từ HTTP, tuyến đường để phản hồi và một bao đóng hoặc một phương thức điều khiển.

Ràng buộc tham số định tuyến trong Laravel là gì?

Trong Laravel, bạn có thể xác định ràng buộc cho tham số tuyến đường của mình bằng cách sử dụng phương thức `where` trên phiên bản tuyến đường . Phương thức `where` nhận tên tham số và quy tắc biểu thức chính quy cho tham số đó.

Làm cách nào để lấy tên tuyến đường hiện tại trong Laravel 8?

Làm cách nào để lấy tên tuyến đường hiện tại trong Laravel? .
điều kiện tiên quyết
Nhận tên tuyến đường trong Bộ điều khiển hoặc Phần mềm trung gian
Nhận tên tuyến đường bằng Mặt tiền tuyến đường
Nhận tên tuyến đường bằng Mặt tiền yêu cầu
Lấy tên tuyến đường trong Blade View
Nhận thông tin bổ sung về tuyến đường của bạn

Cách chính xác để đính kèm phương thức điều khiển vào một tuyến đường cụ thể trong Laravel là gì?

Bạn có thể xác định tuyến đường đến phương thức điều khiển này như sau. sử dụng App\Http\Controllers\UserController; Route. get('/user/{id}', [UserController. lớp, 'hiển thị']);