POST PUT PATCH 的單一表單請求類
在 表單請求驗證 示例之後,相同的請求類可以用於 POST
,PUT
,PATCH
,因此你不必使用相同/類似的驗證來建立另一個類。如果你的表中的屬性是唯一的,那麼這會派上用場。
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() {
switch($this->method()) {
case 'GET':
case 'DELETE':
return [];
case 'POST':
return [
'name' => 'required|max:75|unique',
'category' => 'required',
'price' => 'required|between:0,1000',
];
case 'PUT':
case 'PATCH':
return [
'name' => 'required|max:75|unique:product,name,' . $this->product,
'category' => 'required',
'price' => 'required|between:0,1000',
];
default:break;
}
}
從頂部開始,我們的 switch 語句將檢視請求的方法型別(GET
,DELETE
,POST
,PUT
,PATCH
)。
根據方法將返回定義的規則陣列。如果你有一個唯一的欄位,例如示例中的 name
欄位,則需要指定要忽略的驗證的特定 ID。
'field_name' => 'unique:table_name,column_name,' . $idToIgnore`
如果你的主鍵標記為 id
以外的其他鍵,則將主鍵列指定為第四個引數。
'field_name' => 'unique:table_name,column_name,' . $idToIgnore . ',primary_key_column'
在這個例子中,我們使用 PUT
並將路徑(admin/products/{product}
)傳遞給產品 id 的值。所以 $this->product
將等於 id
忽略。
現在你的 PUT|PATCH
和 POST
驗證規則不需要相同。定義符合你要求的邏輯。此技術允許你重用自定義表單請求類中定義的自定義訊息。