我有一个表单,其中包含多个字段,包括国家/地区和价格。
目前我只有两个国家。一种货币格式有两位小数,另一种有三位。
我必须根据所选国家/地区验证价格输入?我怎样才能做到这一点。我理解我应该使用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'); !!}
我的问题是我的所有字段都是相同的格式。我怎样才能更新规则?
答案 0 :(得分: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;
}
}
}
然后,您可以通过将类和方法传递给Validator外观的extend方法来注册上述自定义验证规则。这应该放在boot()
的{{1}}方法中。
App/Providers/AppServiceProvider.php
然后在验证规则中实施。
public function boot()
{
Validator::extend('foo', 'FooValidator@validate');
}