使用路由资源表单没有发布到存储函数



我有一个表单,成功验证后应该会显示所需的结果。但按下按钮后,浏览器显示页面由于不活动而过期。请刷新并重试。

查看页面

<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>

最新更新