[英]Laravel: TokenMismatchException while send form to database
當我嘗試從laravel中的表單保存數據時,始終出現此錯誤:
但是錯誤顯示當我通過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.