javascript - laravel - modify validation rule based on droplist -
i have form there multiple fields including country , price.
currently have 2 countries. 1 has currency format 2 decimal places , other three.
i have validate price input based on country chosen? how can achieve this. understand taht should use js detect change in selection of country not sure how apply updated rule??
here rules
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})?$/' ]; }
i using laravel 5 javascript validation
, use {!! jsvalidator::formrequest('app\http\requests\storeblogpostrequest', '#my-form'); !!}
problem have fields in same form. how can able update rules?
create class extends \illuminate\validation\validator
. can placed anywhere in application, namespace appropriately.
use \illuminate\validation\validator; class foovalidator extends validator { public function validate($attribute, $value, $parameters) { // have access input data. var_dump($this->data); // check country , decimals in price. if(validation_passes) { return true; } else { return false; } } }
you can register above custom validation rule passing class , method extend method of validator facade. should placed in boot()
method of app/providers/appserviceprovider.php
.
public function boot() { validator::extend('foo', 'foovalidator@validate'); }
then implement in validations rules.
public function rules() { return [ 'price'=>'foo' ]; }
Comments
Post a Comment