试图在Laravel中更新记录

时间:2017-06-28 01:48:57

标签: php laravel

尝试实现PATCH路由,如果路径为/{userid}/{attribute},则该用户的属性将更改为指定的属性。我目前有:

Route::patch('/{userId}/{band}', function($userId, $band){

     $user = DB::table('users')->find($userId);
     $user->favorite_band = $band;
     $user->save();

     return $user;
});

这不起作用。我的错误是

(1/1) TokenMismatchException in VerifyCsrfToken.php (line 68)

我对Laravel很新,不知道如何做到这一点。这都是在web.php路由文件中完成的。我还没有使用Controller

3 个答案:

答案 0 :(得分:0)

Laravel默认提供CSRF保护。

您需要将CSRF令牌传递给AJAX请求:

将令牌存储在<head>部分:

<meta name="csrf-token" content="{{ csrf_token() }}">

假设您使用的是jQuery,请将令牌添加到所有请求标头中:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

参考:https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token

答案 1 :(得分:0)

在Laravel 5中,在表单字段中插入csrf标记。

<form action="/foo/bar" method="POST">
   <input type="hidden" name="_method" value="PATCH">
   <input type="hidden" name="_token" value="{{ csrf_token() }}">
   ...
</form>

答案 2 :(得分:0)

在App \ Http \ Middleware文件夹中的VerifyCsrfToken.php文件中更新如下

 protected $except = [
    '*'
];