Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何修复Laravel令牌不匹配CSRF错误_Php_Laravel - Fatal编程技术网

Php 如何修复Laravel令牌不匹配CSRF错误

Php 如何修复Laravel令牌不匹配CSRF错误,php,laravel,Php,Laravel,在我在Laravel的一个项目中,我实现了CRUD功能,并且在每个功能的视图中,我根据功能(即,用于更新内容的put)放入了csrf令牌和请求。不幸的是,我有两个问题。它似乎将@csrf和@method(put)以纯文本形式放在html页面上,而不是将各自的功能添加到页面中。另外,例如,在编辑页面上,当我尝试编辑数据库中的现有条目时,会出现令牌不匹配异常错误,我不确定原因 在控制器中编辑操作: public function update(Request $request, $id) {

在我在Laravel的一个项目中,我实现了CRUD功能,并且在每个功能的视图中,我根据功能(即,用于更新内容的put)放入了csrf令牌和请求。不幸的是,我有两个问题。它似乎将@csrf和@method(put)以纯文本形式放在html页面上,而不是将各自的功能添加到页面中。另外,例如,在编辑页面上,当我尝试编辑数据库中的现有条目时,会出现令牌不匹配异常错误,我不确定原因

在控制器中编辑操作:

public function update(Request $request, $id)
{
    $blog = Blog::find($id);
    $blog->title = $request->title;
    $blog->content = $request->content;
    $blog->update();

    return redirect()->route('blog_path', ['blog' => $blog]);
}
编辑.blade.php上的表单:

<form action="{{ route('update_blog_path', ['blog' => $blog->id]) }}" method="POST">
  <input type="hidden" name="_method" value="PUT">
  @csrf

  @method('PUT')

  <div class="form-group">
    <label for="title">Title</label>
    <input type="text" name="title" class="form-control" value="{{ $blog->title}}">
  </div>

  <div class="form-group">
    <label for="content">Content</label>
    <textarea name="content" rows="10" class="form-control">{{$blog->content}}</textarea>
  </div>

  <div class="form-group">
    <button type="submit" class="btn btn-outline-primary">Edit Blog Post</button>
  </div>
</form>

@csrf
@方法('PUT')
标题
内容
{{$blog->content}
编辑博客文章
令牌不匹配错误也不允许我登录并注册标准的Laravel身份验证,因此我想知道这是否是解决此错误的简单修复方法,或者是否还有其他解决方法

解决方案#1-添加此元标记:

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

解决方案#2-添加如下隐藏输入:

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


您使用的是什么版本的Laravel
@csrf
在5.6+Im中使用最新版本的Laravel 5.8。您的
部分是否也有csrf字段,如果有,请尝试删除一个。只需添加一个隐藏字段
来修复它,它会出现一个新错误,即
方法不允许HttpException
。现在看来我的路线没有设置为允许POST。你的路线应该是
route::put
而不是
route::POST
。非常感谢。