有一个页面,用户可以为每种票证类型选择他想要的数量,然后用户点击下一步,然后他会转到显示请求摘要的页面。
在用户选择数量的页面中,对于每种故障单类型,都有一个用户可以选择的最小和最大数量,例如对于故障单类型“中心工作台”,用户可以选择最大数量的故障单和门票类型“横向工作台”最多3个。
您知道这个问题的正确性:如果此选定数量页面中的用户,请将源代码中的数量更改为例如“1000000”的故障单类型“中心工作台”并单击“下一步”dd($ request-> all());所示:
array:2 [▼
"_token" => ""
"type" => array:2 [▼
"center bench" => "1000000"
"lateral bench" => "1"
]
因此控制器将收到“中心工作台”=> “100000”,这是不正确的。
你知道怎么办吗?
代码:
因此,在第一页中,用户可以使用此代码选择每种故障单类型的数量:
<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=type[{{ $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>
当“下一步”按钮时,我在数组中获取用户的选定数量并使用storeQuantity()方法返回注册页面:
class RegistrationController extends Controller
{
public function storeTypes(Request $request){
dd($request->all());
$selectedTypes = $request->type;
return view('congresses.registration')->with('selectedTypes', $selectedTtypes);
}
}
答案 0 :(得分:2)
您可以使用javascript验证程序(例如parsleyjs)控制用户可以在表单中放置的值,但必须始终验证后端数据,我们从来没有,信任用户。
这就是为什么Laravel有一个非常好的方法来验证控制器中的传入数据,你可以找到如何validate the application's incoming data。
看,你可以这样做:
class RegistrationController extends Controller
{
public function storeTypes(Request $request){
$validatedData = $request->validate([
'type.center bench' => 'required|max:100',
//add there more validation rules...
]);
$selectedTypes = $request->type;
return view('congresses.registration')->with('selectedTypes', $selectedTtypes);
}
}
如果验证失败,它将使用包含所有验证错误的MessageBag对象重定向回视图。