簡體   English   中英

Laravel:TokenMismatchException,同時將表單發送到數據庫

[英]Laravel: TokenMismatchException while send form to database

當我嘗試從laravel中的表單保存數據時,始終出現此錯誤:

VerifyCsrfToken.php第68行中的TokenMismatchException:

但是錯誤顯示當我通過apache訪問laravel時,當我通過命令php artisan serve --host 0.0.0.0運行laravel服務器時,它可以完美運行...

這是我的表單視圖:

<form class="" method="POST" action="{{ $card->path() }}/notes">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="form-group">
        <textarea name="body" class="form-control" rows="8" cols="40"></textarea>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary" name="button">Dodaj</button>
    </div>
</form>

這是我的控制器:

<?php

namespace App\Http\Controllers;

use App\Card;
use App\Note;
use Illuminate\Http\Request;

use App\Http\Requests;

class NotesController extends Controller
{
   public function store(Request $request, Card $card)
   {
      $card->notes()->save(
         new Note(['body' => $request->body])
      );

      return back();
    }
}

這是我的功能,在成功將表單發送到數據庫后,它將重定向用戶:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Card extends Model
{
    //
    public function notes()
    {
       return $this->hasMany(Note::class);
    }

    public function path()
    {
        return '/cards/' . $this->id;
    }
}

在表單標簽{{ csrf_field() }}

在標題中添加此行

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

您首先要清除您的觀點

php artisan view:clear

然后這樣寫你的觀點

<form class="" method="POST" action="{{ $card->path() }}/notes">
{!! csrf_field() !!}
    <div class="form-group">
        <textarea name="body" class="form-control" rows="8" cols="40"></textarea>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary" name="button">Dodaj</button>
    </div>
</form>

這可能會解決您的問題

在Laravel中,最佳實踐是使用Blade作為表格。 它將自己創建令牌。

{!! Form::open(['action'=>$card->path().'/notes','method'=>'post']) !!}
    // fields and buttons
{!! Form::close() !!}

我有同樣的問題,並通過清除視圖緩存來修復它: php artisan view:clear ,然后將存儲文件夾更改為777 而不是775

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM