Làm cách nào để kiểm tra dữ liệu yêu cầu trong laravel?

Gói này có thể tự động giải quyết một đối tượng

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
7 từ các giá trị này bằng cách sử dụng lớp
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
7 mà chúng ta đã thấy trong chương trước

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}

Bây giờ bạn có thể đưa lớp

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
7 vào bộ điều khiển của mình. Nó sẽ được lấp đầy với các giá trị được tìm thấy trong yêu cầu

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}

##Sử dụng xác thực

Khi tạo một đối tượng dữ liệu từ một yêu cầu, gói cũng có thể xác thực các giá trị từ yêu cầu sẽ được sử dụng để xây dựng đối tượng dữ liệu

Có thể thêm các quy tắc làm thuộc tính cho các thuộc tính của đối tượng dữ liệu

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}

Khi bạn cung cấp cho một nghệ sĩ độ dài hơn 20 ký tự, quá trình xác thực sẽ không thành công giống như khi bạn tạo một lớp yêu cầu tùy chỉnh cho điểm cuối

Bạn có thể tìm thấy danh sách đầy đủ các quy tắc có sẵn tại đây

Một thuộc tính đặc biệt là thuộc tính

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property
0. Với nó, bạn có thể viết các quy tắc giống như khi tạo một yêu cầu Laravel tùy chỉnh

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property

Cũng có thể viết các quy tắc trong một phương thức chuyên dụng trên đối tượng dữ liệu. Điều này có thể hữu ích khi bạn muốn xây dựng một đối tượng quy tắc tùy chỉnh không thể thực hiện được với các thuộc tính

________số 8

Thậm chí có thể sử dụng các đối tượng validationAttribute trong phương thức

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property
1

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
0

Các quy tắc được xác định trong phương thức

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property
1 sẽ luôn ghi đè lên các quy tắc được tạo tự động

Bạn thậm chí có thể thêm các phụ thuộc để được tự động đưa vào

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
2

Ngoài ra, nếu bạn cần truy cập tải trọng dữ liệu, bạn có thể sử dụng tham số

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property
3

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
4

##Ánh xạ một yêu cầu vào một đối tượng dữ liệu

Theo mặc định, gói sẽ thực hiện ánh xạ 1-1 từ yêu cầu đến đối tượng dữ liệu, điều đó có nghĩa là đối với mỗi thuộc tính trong đối tượng dữ liệu, một giá trị có cùng khóa sẽ được tìm kiếm trong các giá trị yêu cầu

Nếu bạn muốn tùy chỉnh ánh xạ này, thì bạn luôn có thể thêm một phương thức tạo ma thuật như thế này

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
5

## Lấy đối tượng dữ liệu chứa đầy dữ liệu yêu cầu từ mọi nơi

Bạn có thể giải quyết một đối tượng dữ liệu từ vùng chứa

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
0

Chúng tôi giải quyết một đối tượng dữ liệu từ vùng chứa, tất cả các thuộc tính của nó sẽ được lấp đầy bởi các giá trị của yêu cầu với các tên khóa phù hợp. Nếu yêu cầu chứa dữ liệu không tương thích với đối tượng dữ liệu, một ngoại lệ xác thực sẽ được đưa ra

##Tự động suy ra quy tắc cho thuộc tính

Vì chúng tôi có các đối tượng dữ liệu được gõ mạnh như vậy, nên chúng tôi có thể suy ra một số quy tắc xác thực từ chúng. Trình suy luận quy tắc sẽ lấy thông tin về loại thuộc tính và sẽ tạo quy tắc xác thực từ thông tin đó

Trình suy luận quy tắc được định cấu hình trong tệp cấu hình

// using an array
#[Rule(['required', 'string'])] 
public string $property

// using a string
#[Rule('required|string')]
public string $property

// using multiple arguments
#[Rule('required', 'string')]
public string $property
4

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
1

Theo mặc định, bốn trình suy luận quy tắc được bật

  • Đôi khiRuleInferrer sẽ thêm quy tắc
    // using an array
    #[Rule(['required', 'string'])] 
    public string $property
    
    // using a string
    #[Rule('required|string')]
    public string $property
    
    // using multiple arguments
    #[Rule('required', 'string')]
    public string $property
    
    5 khi thuộc tính là tùy chọn
  • NullableRuleInferrer sẽ thêm quy tắc
    // using an array
    #[Rule(['required', 'string'])] 
    public string $property
    
    // using a string
    #[Rule('required|string')]
    public string $property
    
    // using multiple arguments
    #[Rule('required', 'string')]
    public string $property
    
    6 khi thuộc tính có thể vô hiệu hóa
  • Bắt buộcRuleInferrer sẽ thêm quy tắc
    // using an array
    #[Rule(['required', 'string'])] 
    public string $property
    
    // using a string
    #[Rule('required|string')]
    public string $property
    
    // using multiple arguments
    #[Rule('required', 'string')]
    public string $property
    
    7 khi thuộc tính không thể vô hiệu hóa
  • BuildInTypesRuleInferrer sẽ thêm một quy tắc dựa trên các loại php tích hợp
    • Loại
      // using an array
      #[Rule(['required', 'string'])] 
      public string $property
      
      // using a string
      #[Rule('required|string')]
      public string $property
      
      // using multiple arguments
      #[Rule('required', 'string')]
      public string $property
      
      8 hoặc
      // using an array
      #[Rule(['required', 'string'])] 
      public string $property
      
      // using a string
      #[Rule('required|string')]
      public string $property
      
      // using multiple arguments
      #[Rule('required', 'string')]
      public string $property
      
      9 sẽ thêm quy tắc
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      0
    • Loại
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      1 sẽ thêm quy tắc
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      2
    • Loại
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      3 sẽ thêm quy tắc
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      3
    • Loại
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      5 sẽ thêm quy tắc
      class SongData extends Data
      {
          public function __construct(
              public string $title,
              public string $artist,
          ) {
          }
          
          public static function rules(): array
          {
              return [
                  'title' => ['required', 'string'],
                  'artist' => ['required', 'string'],
              ];
          }
      }
      
      5
  • AttributesRuleInferrer sẽ đảm bảo rằng các thuộc tính quy tắc mà chúng tôi đã mô tả ở trên cũng sẽ thêm các quy tắc của chúng

Có thể viết suy luận quy tắc của bạn. Bạn có thể tìm thêm thông tin ở đây

##Bỏ qua xác thực

Đôi khi, bạn không muốn các thuộc tính được xác thực tự động, chẳng hạn như khi bạn ghi đè phương thức quy tắc theo cách thủ công như thế này

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
2

Khi một yêu cầu đang được xác thực, các quy tắc sẽ như thế này

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
3

Chúng tôi biết rằng chúng tôi không bao giờ muốn xác thực thuộc tính

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
    
    public static function rules(): array
    {
        return [
            'title' => ['required', 'string'],
            'artist' => ['required', 'string'],
        ];
    }
}
7 vì nó sẽ không có trong tải trọng yêu cầu, điều này có thể được thực hiện như vậy

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
4

Bây giờ các quy tắc xác nhận sẽ trông như thế này

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
5

##Ghi đè trình xác thực

Trước khi xác thực các giá trị, có thể bổ sung vào trình xác thực. Điều này có thể được thực hiện như vậy

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
6

##Ghi đè tin nhắn

Có thể ghi đè lên các thông báo lỗi sẽ được trả về khi lỗi

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
7

##Ghi đè thuộc tính

Trong quy tắc xác thực mặc định của Laravel, bạn có thể ghi đè lên tên của thuộc tính như vậy

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
8

##Ghi đè chức năng xác thực khác

Bên cạnh việc ghi đè trình xác thực, thuộc tính và thông báo, bạn cũng có thể ghi đè chức năng sau

Chuyển hướng khi xác thực không thành công

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
}
9

Hoặc tuyến đường sẽ được sử dụng để chuyển hướng sau khi xác thực không thành công

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
0

Có nên dừng xác thực trong lần thất bại đầu tiên hay không

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
1

Tên của túi lỗi

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
2

##Sử dụng phụ thuộc trong chức năng ghi đè

Bạn cũng có thể cung cấp các phụ thuộc để được đưa vào trong các phương thức chức năng của trình xác thực được ghi đè như

class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
    
    public static function rules(): array
    {
        return [
            'title' => ['required', 'string'],
            'artist' => ['required', 'string'],
        ];
    }
}
8 ,
class SongData extends Data
{
    public function __construct(
        public string $title,
        public string $artist,
    ) {
    }
    
    public static function rules(): array
    {
        return [
            'title' => ['required', 'string'],
            'artist' => ['required', 'string'],
        ];
    }
}
9,
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
00,
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
01,
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
02,
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
03

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
3

##Ủy quyền yêu cầu

Giống như với các yêu cầu của Laravel, chỉ có thể ủy quyền một hành động cho một số người nhất định

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
4

Nếu phương thức trả về

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
04, thì một
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
05 sẽ được ném ra

##Xác thực tập hợp các đối tượng dữ liệu

Giả sử chúng ta muốn tạo một đối tượng dữ liệu như thế này từ một yêu cầu

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
5

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
7 có các quy tắc xác thực riêng nên gói sẽ tự động áp dụng chúng khi giải quyết các quy tắc xác thực cho đối tượng này

Trong trường hợp này, các quy tắc xác thực cho

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
07 sẽ như thế này

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
6

##Xác thực một đối tượng dữ liệu mà không cần yêu cầu

Cũng có thể xác thực giá trị cho đối tượng dữ liệu mà không cần sử dụng yêu cầu

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
7

Điều này sẽ ném một

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
08 hoặc trả lại phiên bản đã xác thực của tải trọng

Có thể trả về một đối tượng dữ liệu khi tải trọng hợp lệ khi gọi

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
8

##Truy xuất các quy tắc xác thực cho một đối tượng dữ liệu

Bạn có thể truy xuất các quy tắc xác thực mà một đối tượng dữ liệu sẽ tạo ra như vậy

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
9

Điều này sẽ tạo ra mảng sau với các quy tắc

class SongController{
    ...
    
    public function update(
        Song $model,
        SongData $data
    ){
        $model->update($data->all());
        
        return redirect()->back();
    }
}
6

Bạn cũng có thể chọn các trường cụ thể như vậy

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
1

Mà sẽ cung cấp cho bạn các quy tắc sau đây

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
2

Khi bạn có các quy tắc tùy thuộc vào tải trọng cụ thể, bạn có thể cung cấp tải trọng

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
3

##Xác thực và lồng hoặc thu thập cùng một lớp

Xin lưu ý rằng không thể lồng hoặc thu thập cùng một lớp và sau đó tạo quy tắc xác thực. Các ví dụ sau đây sẽ gây ra một vòng lặp vô hạn vì các quy tắc sẽ được tạo lặp đi lặp lại cho đến khi bộ nhớ của bạn cạn kiệt

class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
4
class SongData extends Data
{
    public function __construct(
        public string $title,
        #[Max(20)]
        public string $artist,
    ) {
    }
}
5

Bạn vẫn có thể sử dụng gói này với các loại đối tượng dữ liệu này. Các phương pháp tạo phép thuật, biến đổi và tất cả các chức năng khác của gói này sẽ vẫn hoạt động

Nhưng việc sử dụng đối tượng dữ liệu này để tạo quy tắc xác thực là không thể. Lưu ý rằng gói cũng tạo quy tắc xác thực khi đưa đối tượng dữ liệu vào bộ điều khiển. Giải pháp tốt nhất trong trường hợp như vậy là xác định thủ công các quy tắc xác thực và sử dụng phương thức tạo kỳ diệu để tạo các đối tượng dữ liệu như thế này

Làm cách nào để xem dữ liệu từ cơ sở dữ liệu trong Laravel?

Sau khi định cấu hình cơ sở dữ liệu, chúng tôi có thể truy xuất các bản ghi bằng cách sử dụng mặt tiền DB với phương thức chọn . Cú pháp của phương thức select như trong bảng sau. Chạy một câu lệnh chọn đối với cơ sở dữ liệu.

Làm cách nào để hiển thị tất cả dữ liệu trong Laravel?

12 câu trả lời. Được sắp xếp bởi. .
1 - Sử dụng all() hoặc get(); . tất cả các();.
2 - Sử dụng mặt tiền DB. Đặt dòng này trước lớp trong bộ điều khiển sử dụng Illuminate\Support\Facades\DB; . .
3 - Sử dụng mặt tiền DB với lựa chọn

Làm cách nào để lấy giá trị trong Laravel?

Phương thức value() là một phương thức trình tạo truy vấn được liên kết với các truy vấn khác để nhận một giá trị duy nhất từ ​​hàng hoặc bản ghi đã truy xuất.

Làm cách nào để đọc dữ liệu biểu mẫu trong Laravel?

Ví dụ 1 .
Sử dụng file_get_contents()
phương thức file_get_contents() là một hàm PHP tích hợp và nó trả về nội dung tệp thành định dạng chuỗi. Bây giờ để lấy dữ liệu thô của biểu mẫu, bạn có thể cung cấp đầu vào cho file_get_contents dưới dạng php. //đầu vào
Sử dụng phương thức getContent()
Sử dụng phương thức all() trên lớp Yêu cầu
Sử dụng phương thức get()