laravel 中的表单提交不起作用并显示令牌不匹配异常
Posted
技术标签:
【中文标题】laravel 中的表单提交不起作用并显示令牌不匹配异常【英文标题】:Form submission in laravel is not working and show token-mismatch Exception 【发布时间】:2018-04-10 11:04:17 【问题描述】:我是新的 laravel 学习者。我在 laravel 5.4 中创建了一个表单并添加了两个字段,一个是文本字段,另一个是提交按钮。我已经为表单提交创建了一个名称路由。但是当我提交表单时,它会显示令牌不匹配异常。我无法从我的代码中找出错误。 这是我的表单代码。
<form method="post" action="route('f.submit')">
csrf_field()
<input class="form-control" type="text" name="fname">
<input type="submit" name="submit" value="Create">
</form>
这是我的路线,
Route::post('formsubmit','HomeController@formSubmit')->name('f.submit');
这里是我的控制器,
public function formSubmit()
echo "Form Submitted";
【问题讨论】:
使用 !! csrf_field() !! 代替 csrf_field() 【参考方案1】:从 Laravel 5.6 开始,您可以只使用 @csrf
的新刀片指令。例如:
<form method="POST" action="/profile">
@csrf
...
</form>
【讨论】:
【参考方案2】:试试这个。 表格。
<form method="post" action="route('f.submit')">
csrf_field()
<input class="form-control" type="text" name="fname">
<input type="submit" name="submit" value="Create">
在控制器中。
public function formSubmit(Request $request)
$request->all();
【讨论】:
【参考方案3】:您必须为令牌添加输入隐藏字段。改变你的看法:
<form method="post" action="route('f.submit')">
<input type="hidden" name="_token" value=" csrf_token() ">
<input class="form-control" type="text" name="fname">
<input type="submit" name="submit" value="Create">
</form>
【讨论】:
他已经通过使用 csrf_field() 做到了,但他使用 而不是 !! !!【参考方案4】:您能否确保您的/storage
目录具有正确的写入权限(0755)?如果您使用的是 Linux,您可以通过 sudo chmod 0755 -R storage/
更改它
另外,尽量不要转义 csrf_field() 值。而不是 csrf_field()
尝试 !! csrf_field !!
因为该辅助函数会吐出 html
【讨论】:
以上是关于laravel 中的表单提交不起作用并显示令牌不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章