Laravel表单请求验证不适用于getValidatorInstance()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel表单请求验证不适用于getValidatorInstance()相关的知识,希望对你有一定的参考价值。
我在规则函数中有一个简单的规则数组:
return [
'anumber' => 'required|numeric'
];
我用这种方式填充getValidatorInstance方法:
request()->merge(['anumber' => IdsCompany::getNumDBempty()]);
getNumDBempty()
按预期工作,并返回int
或false
,我希望验证器只接受请求,如果函数返回一个数字。
控制器方法:
public function store(StoreIdsCompanyRequest $request, IdsCompany $ids_company_reg)
{
//$ids_company_reg = new IdsCompany;
$data = request()->all();
$user = User::find(auth()->id());
$numEmpresasAsesor = DB::table('accesses')
->where('userId', '=', auth()->id())
->distinct('companyId')->count();
if ($numEmpresasAsesor < ($user->consultant->asesorLimiteEmpresas))
{
if($ids_company_reg->createCompany_ForConsultant($data,$user->id))
{
return redirect()->route('consultants.companies.index')->with('success',trans('textos.SACC_registro_guardado'));
}
else
{
return redirect()->route('consultants.companies.create')->withInput()->withErrors($ids_company_reg->errors);
}
}
else
{
$ids_company_reg->errors = new IlluminateMessageBag;
$ids_company_reg->errors->add('error', trans('textos.CCF_numero_empresas'));
return redirect()->route('consultants.companies.create')->withInput()->withErrors($ids_company_reg->errors);
}
}
问题是anumber
与请求合并,但它一直告诉我anumber
是强制性的。
我一直在争取和搜索几天,我没有找到任何线索,为什么验证器不会对getValidatorInstance()
中合并的变量起作用。 (我试图在其他FormRequest
中验证这一点,结果是一样的,他们忽略了它,因为变量从来没有,但是请求里面有它。)
在Laravel 5.5 atm工作,并计划在我的表单请求完成并正常工作时升级5.6。
答案
好吧,我想通了:
似乎添加新变量的正确方法是:
$data['anumber'] = IdsCompany::getNumDBempty();
并将其添加到请求中:request() - > merge(['anumber'=> IdsCompany :: getNumDBempty()]);
以上是关于Laravel表单请求验证不适用于getValidatorInstance()的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式验证规则,以避免特殊字符不适用于 laravel 中的文本字段