Laravel表单请求验证不适用于getValidatorInstance()

时间:2018-03-01 09:05:31

标签: php laravel validation laravel-5 laravel-5.5

我在规则函数中有一个简单的规则数组:

return [
    'anumber'  => 'required|numeric'
];

我用getValidatorInstance方法填充此方法:

request()->merge(['anumber' => IdsCompany::getNumDBempty()]);

getNumDBempty()正在按预期工作,并返回intfalse,我希望验证程序仅在函数返回数字时接受请求。

控制器方法:

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。

1 个答案:

答案 0 :(得分:0)

好吧我明白了:

似乎添加新变量的正确方法是:

$data['anumber'] = IdsCompany::getNumDBempty();

然后将其添加到请求中:     request() - &gt; merge(['anumber'=&gt; IdsCompany :: getNumDBempty()]);