如何在FormRequest类中使用规则验证?

时间:2018-01-24 16:53:58

标签: laravel laravel-5

我有一家公司,我想验证更新请求。到目前为止,我已在update()操作中验证了请求,但我想将其移至自己的CompanyUpdateRequest

在验证中,我检查了税号的唯一性,但我当然希望允许该公司使用相同的税号。

'tax_number' => [
    'required',
    'string',
    Rule::unique('companies')->ignore($company->tax_number),
],

只要将其放在动作中,我已经$company已经执行此操作:

public function update(Request $request, Company $company) 
{
}

我现在的问题是,如何让公司进入CompanyUpdateRequest

我知道我可以将公司的ID放在表单中的隐藏字段中,随请求一起发送,从DB中提取公司......但这感觉有点不对劲。有没有人有更好的/另一种方法或想法?

非常感谢。

3 个答案:

答案 0 :(得分:1)

您可以通过表单传递任何数据:

<input name="company_id" value="{{ $company->tax_number }}" type="hidden">

然后在CompanyUpdateRequest班:

Rule::unique('companies')->ignore($request->company_id),

您还可以将此规则更改为:

'companies' => 'unique:companies,company_id,' . $request->company_id,

答案 1 :(得分:1)

使用route()方法。假设您的路线参数名称为company -

$this->route('company');
  

注意:路由方法中的parameter方法需要与url route参数完全相同。在这种情况下 -

     

Route::post('yourUrl/{company}','SomeController@method');

答案 2 :(得分:1)

您可以使用$this->route('paramName');

获取它
Rule::unique('companies')->ignore($this->route('company')),