根据下拉列表修改验证规则

modify validation rule based on droplist

本文关键字:验证 规则 修改 下拉列表      更新时间:2023-09-26

我有一个表格,其中有多个字段,包括国家和价格。

目前我只有两个国家。一个具有两个小数位的货币格式,另一个具有三个小数位的货币格式。

我必须根据所选国家/地区验证价格输入?我怎样才能做到这一点。我知道我应该使用 JS 来检测国家/地区选择的变化,但我不确定如何应用更新的规则?

以下是规则

public function rules()
{
    return [
        'email' => 'required|email|unique:users,email',
        'username' => 'unique:users,username',
        'password' => 'required|min:6|confirmed',
        'birthday' => 'date',
        'factory' => 'required|exists:factories,id',
        'country' => 'required|exists:countries,id',
        'category' => 'required',
        'rm_code' => 'required',
        'cost_basis' => 'required',
        'supplier' => 'required',
        'po_number' => 'required',
        'qty' => 'required|number|regex:^[1-9]'d*$',
        'purchase_date' => 'date',
        'received_date' => 'date',
        'price'=>'required|regex:/^'d*('.'d{1,3})?$/'
    ];
}

我正在使用Laravel 5 Javascript Validation并使用{!! JsValidator::formRequest('App'Http'Requests'StoreBlogPostRequest', '#my-form'); !!}我的问题是我的所有字段都处于相同的形式中。如何更新规则?

创建一个扩展'Illuminate'Validation'Validator的类。这可以放置在应用程序中的任何位置,只需适当地将其命名即可。

use 'Illuminate'Validation'Validator;
class FooValidator extends Validator
{
    public function validate($attribute, $value, $parameters)
    {
        // You have access to all Input data.
        var_dump($this->data);
        // Check the country and the decimals in the price.
        if(VALIDATION_PASSES) {
            return true;
        } else {
            return false;
        }
    }
}

然后,可以通过将类和方法传递给验证程序外观的扩展方法来注册上述自定义验证规则。这应该放在boot()方法中 App/Providers/AppServiceProvider.php .

public function boot()
{
    Validator::extend('foo', 'FooValidator@validate');
}

然后在验证规则中实现它。

public function rules()
{
    return [
        'price'=>'foo'
    ];
}