Select中的验证问题:Laravel 5.3

Select中的验证问题:Laravel 5.3,laravel,laravel-5,laravel-5.2,laravel-5.1,laravel-5.3,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="bVyYZGPpr

我的表格如下所示

<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',
        ];            
    }
}
请求类在下面

<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时,它不会进行验证,我是否遗漏了什么?

您的
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>

尝试向规则中添加一条
数值规则。我怀疑
-1
被视为字符串
“-1”
,因此
min:1
表示字符串必须至少包含一个字符。我建议接受@TomasButeler的。他在同一时间对同一件事进行了调整,并且已经有了答案。干杯我投了反对票。因为这是一个解决方案,而不是一个解决方案。请参阅@ceejayoz发布的评论,但如果您添加了ceejayoz提出的建议,我将收回downvote,并将其标记为已接受。@Helper我已合并@ceejayoz建议。不过,我很好奇为什么你会考虑调整HTML表单。如果OP试图拒绝默认值,考虑到它永远不会被处理或插入数据库,它是
'
还是
-1
,这真的很重要吗?我认为
-1
是不必要的。我认为“
numeric
”是一个更好的选择,OP is me:)这篇文章是我创建的。@TomasButeler
-1
确实是不必要的,我更喜欢你的空白值。但是,如果没有
numeric
规则,Laravel很乐意将
hello
验证为有效输入,因为它有五个字符。:-)在这种情况下,我更喜欢像
required | In:1,2,3
。我将使用
规则中的
来验证选择,并使用
数值
来验证数字类型的输入。