請求
最后更新于:2022-04-01 23:11:51
# HTTP 請求
這裏會介紹如何在 Laravel 5 驗證 HTTP 請求的資料
### 建立新的請求驗證
如果我們有文章(Article)的模型,我們在每次請求過程中想要驗證傳入的資料,我們可以使用系列指令建立要驗證的請求:
~~~
$ php artisan make:request CreateArticleRequest
~~~
請求驗證的檔案會被建立在 `app\Http\Requests` 目錄下,建立的檔案內容如下
~~~
'required|min:3',
'body' => 'required|min:30',
// 使用陣列設定驗證規則
'published_at' => [
'required',
'date',
],
];
}
}
~~~
在驗證請求的 CreateArticleRequest 中的 rules() 函式,除了僅回傳驗證規則外,你也可以判斷不同的狀況去加入不同的規則再回傳,像是:
~~~
'required|min:3',
'body' => 'required|min:30',
// 使用陣列設定驗證規則
'published_at' => [
'required',
'date',
],
];
// 其他條件判斷
if ($condition) {
$rules['something_else'] = 'required';
}
return $rules;
}
}
~~~
### 指定 Controller 函式處理指定的請求驗證
在我們使用 Controller 去處理請求時,我們可以再傳入變數內設定要怎麼處理請求:
~~~
class ArticleController extends Controller {
// 新增文章
public function store(App\Http\Requests\CreateArticleRequest $request)
{
Article::create(Request:all());
// OR
// Article::create($request->all());
return redirect('articles');
}
}
~~~
這樣設定之後,所有的 HTTP 請求的 Input 資料都會經過 `App\Http\Requests\CreateArticleRequest` 驗證,如果有經過驗證才會繼續執行後面的新增文章動作,否則的話則會丟出驗證錯誤的物件到原頁面。
### 驗證錯誤訊息
這裏要注意到,視圖(View)的每一頁 Laravel 都會將驗證錯誤物件(Illuminate\Support\ViewErrorBag)包成 `$errors` 變數,所以你可以在每一頁去印出 `$errors` 值,`$errors` 變數儲存的是任何資料驗證錯誤的結果
**判斷是否有任何的錯誤並顯示錯誤訊息**
~~~
// 任一 blade 視圖(View)皆可以接收此錯誤變數
@if($errors->any())
// 有錯誤訊息
';
-
$foreach ($errors->all() as $error)
- {{ $error }} @endforeach