【问题标题】:how to handle incorrect values inserted from source code?如何处理从源代码插入的错误值?
【发布时间】:2018-04-06 13:07:37
【问题描述】:

有一个页面,用户可以在其中为每种工单类型选择他想要的数量,然后用户单击下一步,然后转到显示请求摘要的页面。

在用户选择数量的此页面中,对于每种票类型,用户可以选择最小和最大数量,例如对于票类型“center bench”,用户可以选择最大票数和票种“横向板凳”最多3张。

你知道如何纠正这个问题:如果用户在这个选择数量页面,将源代码中的数量更改为例如“1000000”的票类型“中心长凳”,然后点击“下一个” dd($request->all());显示:

array:2 [▼
  "_token" => ""
  "type" => array:2 [▼
    "center bench" => "1000000"
    "lateral bench" => "1"
  ]

所以控制器会收到“center bench”=>“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);
    }
}

【问题讨论】:

  • 在你的 Blade 模板中添加一个 JavaScript 验证器

标签: php laravel


【解决方案1】:

您可以使用 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 对象重定向回视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    相关资源
    最近更新 更多