我正在使用表单请求验证,并且有一些规则需要外部值作为参数 .
以下是我在表单请求类中编辑业务配置文件的验证规则,
public function rules()
{
return [
'name' => 'required|unique:businesses,name,'.$business->id,
'url' => 'required|url|unique:businesses'
];
}
我可以通过类型提示它在控制器上使用它 .
公共职能postBusinessEdit(BusinessEditRequest $ request,Business $ business){
}
但是如何将$ business对象作为参数传递给rules方法?
5 回答
让我们说这是你的模型绑定:
然后你可以在
FormRequest
对象中引用Business
类,如下所示:请注意,如果您在创建和更新验证时使用表单请求,则在创建记录时,业务变量将为
null
,因为您的对象尚不存在 . 因此,在引用对象属性或方法之前,请务必进行必要的检查 .有很多方法可以实现这一目标 . 我这样做如下 .
您可以在商业表单中使用隐藏字段“id”,如下图所示,
并且您可以在
FormRequest
中检索此id
,如下所示,对于那些转向laravel 5的人:
至少在Laravel 5.5中(没有检查旧版本),一旦你做了明确的绑定(https://laravel.com/docs/5.5/routing#route-model-binding),你可以通过$ this直接得到你的模型:
假设我们想要更改验证规则的场景取决于我们传入路径的
type
. 例如:对于不同类型的业务,我们有不同的验证规则 . 我们需要做的就是在控制器方法上键入提示请求 .
对于自定义表单请求