【问题标题】:How to validate Money in Laravel5 request class如何在 Laravel5 请求类中验证 Money
【发布时间】:2016-02-11 00:27:09
【问题描述】:

我的验证类看起来像这样

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class PaymentRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        $rules = array(

                       'invoiceid'=>'required',
                       'recieved_amount'=>'required',
                       'ref_no'=>'required',
                       'date'=>'required',
                       'comment'=>'required'
                       );


    }
}

我想验证 recieved_amount 作为 Money 字段就像如果输入了除钱以外的任何其他内容,则应该验证它

谁能帮帮我

【问题讨论】:

  • 什么是“钱”?不就是一个数字吗?
  • 进行自定义验证。
  • @Satisfaction 是的,我猜它可能是浮动的,但我不知道验证规则是否可以帮助我
  • 如果“货币”是指“我们表示货币的格式”,则它与您居住的国家/地区有关。美国的一千美元与西班牙的一千美元不同。
  • @Amarnasan 实际上...一千美元在美国、西班牙或任何其他国家都是一样的。

标签: php validation laravel laravel-5.1


【解决方案1】:

或者,如果您允许.25 类型输入,请像这样扩展上述规则:

['required', 'regex:/^(\d+(\.\d*)?)|(\.\d+)$/']

【讨论】:

    【解决方案2】:

    您可以使用这个,例如(“金额”货币数量):

    public static $rules = array(
      'amount' => "required|regex:/^\d+(\.\d{1,2})?$/"
    ));
    

    正则表达式适用于“12”或“12.5”或“12.05”等数量。如果您想要多于两位的小数点,请将“2”替换为您需要的允许小数点。

    【讨论】:

    • 所以我将在我的规则数组中添加'amount' =&gt; "required|regex:/^\d*(\.\d{2})?$/" 这一行,它是否适用于整数和浮点数
    • 是的,因为点部分是可选的。但请使用您所在国家/地区的正确货币格式(例如,在美国,他们使用逗号而不是点)
    • 问题是我的公司同时使用美元和印度卢比,也使用其他一些国家货币,例如阿联酋和土耳其,这就是为什么我只是添加一个通用验证
    • 我稍微更改了正则表达式以允许 1 或 2 个十进制数字,看看。
    • 我会再次稍微改变一下:regex:/^\d+(\.\d{1,2})?$/ 禁止.22 之类的东西
    猜你喜欢
    • 2016-06-24
    • 1970-01-01
    • 2015-10-13
    • 2017-08-28
    • 1970-01-01
    • 2022-08-09
    • 2010-12-25
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多