2016-07-31 155 views
0

我在Laravel上有點新。我爲GET和POST創建了一些路線,但唯一可行的就是GET。儘管進程內部和數據庫查詢已正確執行,但POST方法總是返回TokenMismatchException。我在SO上看到的一些問題通常都是關於AJAX,解決方案是發送令牌。但是我沒有使用任何AJAX ......但通常的答案是,如果我使用普通的POST表單,Laravel會插入一個隱藏的標記。在POST請求中的VerifyCsrfToken.php中解決TokenMismatchException

這裏的航線代碼:

Route::post('/practice/{level_id?}/{group_id?}/{command?}', '[email protected]'); 
Route::get('/practice/{level_id?}/{group_id?}/{command?}', '[email protected]'); 

,這裏是我如何得到它的webcontroller:

public function practice($level_id = "", $group_id = "", $command = "") 

有什麼錯嗎?什麼可能使我的POST請求失敗?謝謝。

+1

發送隱藏的輸入字段這樣的事'<輸入名稱=「_令牌」類型=「隱藏」值=」 FaHZmwcnaOeaJzVdyp4Ml8B6l1N1DLUDsZmsjRFL「>' –

+0

@ChoncholMahmud you mean''? –

+0

是的,我的意思是......你能告訴我表單域嗎? –

回答

1

請在您的表單中添加一個隱藏字段。如果您使用的是Laravel表單構建器,那麼當您執行Form::open()時,它會自動爲您的表單添加一個隱藏標記字段。
試着像這樣的東西:

<input name="_token" type="hidden" value="{{ csrf_token() }}"> 
1

如果您正在使用Form::open方法,它不會與Laravel的新版本中,你必須從here安裝它,那麼就會有TokenMismatchException沒有問題。但是,如果你使用的是HTML5表單標籤,那麼你需要添加{{ csrf_field() }}在您的HTML表單,將產生

<input type="hidden" name="_token" value="53sfsffxth7AYe4RFSjzaPf2ygLCecJhbkhblah"> 
相關問題