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'
]);