目前我在laravel输入验证中面临一些问题,其中两者之间的验证规则似乎无法正确应用。以下是我的HTML代码。
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="margin-bottom-10">
<label>Thread Title :</label>
<input name="thread_title" maxlength="100" required>
</div>
<div class="margin-bottom-10">
<label>Price :</label>
<input type="number" step="0.01" min="0" required title="Please enter price with x.xx format." name="thread_item_price" />
</div>
我想做的是验证给定价格必须在0到9999.99之间。我检查元素并删除min =&#34; 0&#34;并尝试用负值表示-1000,系统似乎接受输入。以下是我的验证规则
$validator = Validator::make($request::all(),
[
'thread_title' => 'required|max:100',
'thread_item_price' => 'between:0,9999.99'
],
[
'thread_title.required' => 'Please fill in thread title.',
'thread_title.max' => 'Thread title has exceeded 100 characters.',
'thread_item_price.required' => 'Price cannot be empty.',
'thread_item_price.between' => 'Price must be equals to 0 or 9999.99.',
]);
if ($validator->fails()) {
return Redirect::back()
->withErrors($validator)
->withInput();
};
我做错了什么并且验证失败了吗?
答案 0 :(得分:5)
你需要让Laravel知道它是一个数值。这应该适合你。
'thread_item_price' => 'numeric|between:0,9999.99'
答案 1 :(得分:3)
规则之间只接受数字的整数。您应该使用digits_between规则来表示浮点数。
编辑: 我不知道为什么Laravel会接受它,使用is_numeric函数验证规则digits_。您可以尝试正则表达式规则:
['thread_item_price' => 'regex:/^\d{0,4}\.\d{2}$/'];