Laravel输入验证之间未正确验证

时间:2015-10-29 14:29:35

标签: php validation laravel

目前我在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();
        };

我做错了什么并且验证失败了吗?

2 个答案:

答案 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}$/'];