laravel - изменить правило проверки на основе дроплистов

У меня есть форма, где есть несколько полей, включая страну и цену.

На данный момент у меня всего две страны. Один имеет формат валюты с двумя десятичными разрядами, а другой - с тремя.

Я должен подтвердить ввод цены в зависимости от выбранной страны? Как я могу этого добиться. Я понимаю, что мне следует использовать 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'); !!} Моя проблема в том, что у меня все поля в одной форме. Как я могу быть в состоянии обновить правила?

1 ответ

Создайте класс, который расширяет \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;
        }
    }
}

Затем вы можете зарегистрировать указанное выше пользовательское правило проверки, передав класс и метод в метод extends фасада Validator. Это должно быть помещено в boot() метод App/Providers/AppServiceProvider.php,

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

Затем реализуйте это в ваших правилах валидации.

public function rules()
{
    return [
        'price'=>'foo'
    ];
}
Другие вопросы по тегам