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 中的表单提交不起作用并显示令牌不匹配异常的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - CSRF 与会话令牌不匹配

发布请求不起作用 Laravel 5

Laravel 中的注册和登录表单不起作用

Laravel 模态表单重定向返回,输入不起作用

laravel 无法删除记录

Laravel 5.0 路由模型绑定在销毁操作中不起作用