如何在会话中存储所选数量并在下一页显示此信息?

时间:2018-03-30 11:28:53

标签: php laravel

我有篮球比赛详情页面“single.blade.php”和购买门票“payment.blade.php”的页面。在匹配详细信息页面中,用户可以通过选择选项选择故障单的类型以及他们想要的每个故障的数量。

我对如何在匹配详情页面中获取用户选择的每张票的数量存有疑问,将该信息存储在会话中并将该信息发送到付款页面,以便能够显示所选的票证类型和数量在下一页(付款页面)。

我对此问题的代码结构:

我有一个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>

用户选择数量并点击“下一步”后,他应转到付款页面,上一页中选定的类型和数量应显示在此付款页面中。所以,我有一个PaymentController,我创建了一个storeQuantity()方法。您知道如何在此方法中正确存储会话中选定的类型和数量,以及如何在付款页面中显示此信息吗?

class PaymentController extends Controller
{
    public function storeQuantity(Request $request){
        //dd($request->all());
        return view('matchs.payment');
    }
}

路线:

Route::post('/match/{id}/{slug?}/payment', [
    'uses' => 'PaymentController@storeQuantity',
    'as'   =>'matchs.payment'
]);

dd($request->all());显示:

array:2 [▼
  "center_bench" => "1"
  "left_bench"   => "1"
]

注意:我也不知道它是否真的有必要的会话,也许下一个按钮可以有一个邮政路线并将必要的信息(选定的门票和数量)传递到下一页(付款页面),但我不明白这个过程如何是

2 个答案:

答案 0 :(得分:2)

我认为这对你有用......

  

name = {{Session :: put($ ticket-&gt; title,SELECTED_NUMBER)}}

您可以访问display session data on view template in laravel 5

答案 1 :(得分:1)

对于这种与电子商务网站中的购物车系统类似的功能,我们使用javascript local storage 你可以做这些步骤 当使用将选择一个选项然后执行onchange()函数,该函数只会将所选项的值存储在javascript本地存储中,但在存储之前将检查是否存在相同key的任何值或不(如果用户想要更改所选值,这将使其动态化) 然后,当单击提交按钮时,从javascript localstorage获取值并将其放入会话(使用flash会话)或仅在发布请求中发送