我有一个表单,成功验证后应该会显示所需的结果。但按下按钮后,浏览器显示页面由于不活动而过期。请刷新并重试。
查看页面
<form class="form-horizontal" method="POST" action="{{action('BookController@store')}}">
<div class="row" style="padding-left: 1%;">
<div class="col-md-4">
<div class="form-group">
<label>Book Name</label><span class="required">*</span>
<input type="text" maxlength="100" minlength="3" required="required" runat="server" id="txtBookName" class="form-control" autocomplete="off" autofocus="autofocus" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</form>
路线代码
//web.php
Route::resource('book','BookController');
控制器代码
class BookController extends Controller
{
public function index()
{
//
}
public function create()
{
return view('pages.book');
}
public function store(Request $request)
{
$validatedInput = $request -> validate([
'txtBookName' => 'required|string|min:3|max:100'
]);
return $validatedInput;
}
}
表单urlhttp://127.0.0.1:8000/book/create
按下提交按钮后,页面将重定向到http://127.0.0.1:8000/book并显示The page has expired due to inactivity. Please refresh and try again.
您可以通过调用在表单中发布CSRF令牌
{{ csrf_field() }}
或者在app/Http/Middleware/VerifyCsrfToken.php中排除您的路由:
protected $except = [
'your/route'
];
这样实现可以避免消息过期。
<form action="{{ action('ContactController@store') }}" method="POST">
@csrf <!-- this is the magic line, works on laravel 8 -->
<!--input components-->
<!--input components-->
<!--input components-->
</form>
您应该在表单中使用{{csrf_field((}}。
请在表单类之后执行此操作,因为资源采用@方法('PUT'(
<form class="form-horizontal" method="POST" action="{{action('BookController@store')}}">
{{csrf_field()}}
@method('PUT')
<div class="row" style="padding-left: 1%;">
<div class="col-md-4">
<div class="form-group">
<label>Book Name</label><span class="required">*</span>
<input type="text" maxlength="100" minlength="3" required="required" runat="server" id="txtBookName" class="form-control" autocomplete="off" autofocus="autofocus" />
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</form>