laravel中的表單請求類型和CSRF防護(六)
阿新 • • 發佈:2019-05-03
表單 pda pat http word route brush func pass
laravel中為我們提供了綁定不同http請求類型的函數。
Route::get(‘/test‘, function () {}); Route::post(‘/test‘, function () {}); Route::put(‘/test‘, function () {}); Route::patch(‘/test‘, function () {}); Route::delete(‘/test‘, function () {}); Route::options(‘/test‘, function () {});
但有些時候,我們通過創建資源控制器,裏面的 update() 方法綁定的是 PUT 類型的http請求。
這就需要我們通過表單提交模擬PUT請求。我們可以自已添加一個 _method 的隱藏字段,值為 PUT。
<form action="{{ route(‘test‘) }}" method="post"> <input type="hidden" name="_method" value="PUT"> 用戶名:<input type="text" name="name"> 密碼:<input type="password" name="pwd"> <input type="submit" value="提交"> </form>
也可以使用laravel為我們提供的 method_field() 方法。
<form action="{{ route(‘test‘) }}" method="post"> {{ method_field(‘PUT‘) }} 用戶名:<input type="text" name="name"> 密碼:<input type="password" name="pwd"> <input type="submit" value="提交"> </form>
laravel默認會對每個提交請求,進行csrf令牌的驗證。為了通過驗證,需要在表單中添加 _token 隱藏字段。
<form action="{{ route(‘test‘) }}" method="post"> <input type="hidden" name="_token" value="{{ csrf_token() }}"> 用戶名:<input type="text" name="name"> 密碼:<input type="password" name="pwd"> <input type="submit" value="提交"> </form>
或者使用 csrf_field() 方法。
<form action="{{ route(‘test‘) }}" method="post"> {{ csrf_field() }} 用戶名:<input type="text" name="name"> 密碼:<input type="password" name="pwd"> <input type="submit" value="提交"> </form>
laravel中的表單請求類型和CSRF防護(六)