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

问题描述 投票:0回答:1

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

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。

php laravel validation laravel-5 laravel-5.5
1个回答
0
投票

好吧,我想通了:

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

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

并将其添加到请求中:request() - > merge(['anumber'=> IdsCompany :: getNumDBempty()]);

© www.soinside.com 2019 - 2024. All rights reserved.