如何处理这两个页面的上下文? (安全地存储信息以显示在下一页中)

时间:2018-04-05 23:55:30

标签: php laravel

我试图获得如下所示的上下文,首先有一个页面,用户为每种票证类型选择他想要的数量,然后用户点击下一步,然后他转到显示请求摘要的页面并且还有一个表单,以便用户引入他的姓名,电子邮件等,然后用户点击下一步并选择付款类型,然后选择下一个及其付款页面。 enter image description here

我试图获得前两页的上下文。我有第一页的details.blade.php,显示了故障单类型,选择菜单和故障单类型的价格:

<ul>
    @foreach($tickets as $ticket)
        <li>
            <span>{{$ticket->title}}</span> 
            <form method="post" action="{{route('congress.registration', ['id' => $congress->id, 'slug' => $congress->slug])}}">

                <select name={{ $ticket->title }}>
                    <option selected>0</option>
                    ...
                </select>
            </form>
            <span>X {{$ticket->showPrice()}}</span>
        </li>
    @endforeach
    <li>
        <span>TOTAL</span>
        <span>0.00€</span>
    </li>
    <input type="submit" value="Next"/>
    </form>
</ul>

这很好用。

怀疑:我怀疑是在点击“下一步”按钮时如何为第二页创建上下文。也就是说,安全地存储每种类型的选定数量和每种类型的价格,并将用户重定向到存在请求摘要的下一页。图像中的摘要包含每种故障单类型的数量以及每种故障单类型的价格。

我为此上下文创建了一个RegistrationController和storeTypes()方法,但我不知道如何安全地存储用户为每种类型选择的数量以及价格。

class RegistrationController extends Controller
{
    public function storeTypes(Request $request){
        $selectedTypes = $request->type;
        return view('congresses.registration')->with('selectedTypes', $selectedTtypes);
    }

}

注意:

  • 当在第一页中点击“下一步”时,我们来自会议页面,因此有congress_id,会议和ticketTypes之间存在一对多的关系。
  • 用户无法更改价格,但在第一页中,因为图片中的价格显示为<span>内的价格。并且用户可以在源代码中更改此价格,然后在下一页中价格显示不正确,我不知道如何正确处理此问题。

1 个答案:

答案 0 :(得分:1)

将数据保存到会话中,使其在页面加载之间保持不变。

https://laravel.com/docs/5.6/session#using-the-session

为每个步骤创建一个控制器功能和路径:一个用于显示初始表单;其他用于处理它的提交(将数据保存到会话并重定向到下一步);和其他用于显示下一页(等等)。

您可以使用

将输入字段中的数据保存到会话中
$request->session->put('quantity', $request->input('quantity');

然后使用。

检索它
$request->session->get('quantity');