Php 如何获取用户选择的每张票的数量并将该信息发送到付款页面?
我有一个篮球比赛详情页面和一个购买门票的页面。在“比赛详细信息”页面中,用户可以通过选择选项选择门票类型以及每张门票的数量。然后点击“购买”进入付款页面。在付款页面中,我想显示用户所选内容的摘要,如:Php 如何获取用户选择的每张票的数量并将该信息发送到付款页面?,php,laravel,Php,Laravel,我有一个篮球比赛详情页面和一个购买门票的页面。在“比赛详细信息”页面中,用户可以通过选择选项选择门票类型以及每张门票的数量。然后点击“购买”进入付款页面。在付款页面中,我想显示用户所选内容的摘要,如: Type Quantity Price Subtotal center 2 100$ 200$ left 1
Type Quantity Price Subtotal
center 2 100$ 200$
left 1 50$ 50$
right 1 50$ 50$
Total 300$
您知道如何获取用户在“比赛详细信息”页面中选择的每张门票的数量,并将该信息发送到“付款”页面以显示摘要吗
我对这个问题的代码结构:
我有一个FrontController,它有single()方法来显示匹配详细信息页面:
public function single($id){
$match = Match::where('id', $id)->first();
$tickets = Ticket::where('match_id', $match_id->id)->get();
return view('matchs.show')->with('match',$match)->with('match', $match)->with('tickets', $tickets);
}
然后在“比赛详细信息”页面中,我列出了门票类型,每种门票都有一个“选择”菜单,用户可以选择每种门票需要多少门票:
<ul>
@foreach($tickets as $ticket)
<li>
<span>{{$ticket->title}}</span>
<form method="post" action="{{route('matchs.payment', ['id' => $match->id, 'slug' => $match->slug])}}">
<select name={{ $ticket->title }}>
<option selected>0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</form>
<span>X {{$ticket->showPrice()}}</span>
</li>
@endforeach
<li>
<span>TOTAL</span>
<span>0.00€</span>
</li>
<input type="submit" value="Go To Payment Page"/>
</form>
</ul>
显示付款页面的路径:
Route::get('/match/{id}/{slug?}/payment', [
'uses' => 'FrontController@payment',
'as' =>'matchs.payment'
]);
首先,从route::get到route::post更改您的路由,换一种方式,您可以获得异常notMethodAllowed 下一步:可能会出现csrf异常-您需要将{{csrf_field()}}添加到表单中 我相信有一种更简洁、更优雅的方法可以从DB中获取一个元素: $match=match::findOrFail($id),甚至可以搜索路由模型绑定 您可以用以下较短的方式显示包含数据的视图:返回视图('matchs.show',compact('match','tickets') 基本上,您应该在payment()中获取数据(它应该被称为store或类似的东西),并将该数据放入数据库或会话中,然后重定向到payment函数,查看您从会话或数据库中检索上一步的数据 方法:single()->提交表单->存储(Request$Request)->保存数据并重定向->支付()
记住验证表单中的所有数据 谢谢,我添加了“{csrf_field()}”,但是当点击表单按钮“转到付款页面”时,表单没有提交,你知道为什么吗?你在foreach循环中有开始标记-所以HTML中有biiig混乱(许多表单开始标记-但只有一个结束表单标记)。谢谢,我将表单标记改为上面,并检查了源代码,但是这个按钮还是不起作用。foreach loop tooThanks中有一个标签,现在它起作用了,我怀疑这一部分是否能将数据放入会话并重定向到支付。
Route::get('/match/{id}/{slug?}/payment', [
'uses' => 'FrontController@payment',
'as' =>'matchs.payment'
]);