Select 中的验证问题:Laravel 5.3
Validation Issue in Select : 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低于
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>
或者,您可以按照@ceejayoz 的建议对您的 TypeId
执行数字验证,如下所示:
// PaymentDetailsRequest.php
public function rules() {
return [
'TypeID' => 'required|numeric|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低于
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>
或者,您可以按照@ceejayoz 的建议对您的 TypeId
执行数字验证,如下所示:
// PaymentDetailsRequest.php
public function rules() {
return [
'TypeID' => 'required|numeric|min:1',
];
}