选择中的验证问题:Laravel 5.3

时间:2016-12-03 16:37:57

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我的表单如下

<form method="POST" action="http://localhost:1234/Update" accept-charset="UTF-8">
    <input name="_token" type="hidden" value="bVyYZGPprZKHab8sQXairqhtwszTeQ36LRhp9u2k">
    <input type="hidden" name="_token" value="bVyYZGPprZKHab8sQXairqhtwszTeQ36LRhp9u2k">

    <select class="form-control" name="TypeID">
        <option value="-1">Please select Payment Type</option>
            <option value="2">Bitcoin</option>
            <option value="1">Paypal</option>
            <option value="3">Pioneer</option>
    </select>
    <button type="submit">Update</button>
</form>

控制器操作方法如下所示

public function UpdatePaymentDetails(PaymentDetailsRequest $request) {
}

请求类位于

之下
class PaymentDetailsRequest extends Request {

    public function authorize()
    {
        return true;
    }

    public function rules() {
        return [
            'TypeID' => 'required|min:1',
        ];            
    }
}

问题是什么?

当我没有选择TypeID时,我没有验证,我错过了什么吗?

1 个答案:

答案 0 :(得分:5)

您的TypeID可能是以字符串形式传递的,并且字符长度始终为2(-1),因此根据您自己的规则有效。为什么不直接使用传统的空值?这将使required规则失败并拒绝该请求。

<select class="form-control" name="TypeID">
    <option value="">Please select Payment Type</option>
    <option value="2">Bitcoin</option>
    <option value="1">Paypal</option>
    <option value="3">Pioneer</option>
</select>

或者,您可以按照@ ceejayoz的建议执行TypeId的数字验证,如下所示:

// PaymentDetailsRequest.php

public function rules() {
    return [
        'TypeID' => 'required|numeric|min:1',
    ];            
}