POST PUT PATCH 的單一表單請求類

表單請求驗證 示例之後,相同的請求類可以用於 POSTPUTPATCH,因此你不必使用相同/類似的驗證來建立另一個類。如果你的表中的屬性是唯一的,那麼這會派上用場。

/**
 * 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 語句將檢視請求的方法型別(GETDELETEPOSTPUTPATCH)。

根據方法將返回定義的規則陣列。如果你有一個唯一的欄位,例如示例中的 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|PATCHPOST 驗證規則不需要相同。定義符合你要求的邏輯。此技術允許你重用自定義表單請求類中定義的自定義訊息。