Laravel Form Request类能否使用构造函数?构造函数中dealer_id为空问题
为什么FormRequest构造函数中无法获取请求参数?
在Laravel的FormRequest生命周期里,构造函数的执行时机早于请求输入的绑定流程。当你在自定义构造函数里访问$this->dealer_id时,框架还没把请求中的参数填充到Request实例的属性里,所以自然拿不到值。
而prepareForValidation方法是框架在完成输入绑定、即将开始验证前调用的,这时候请求参数已经被正确加载,所以能正常获取$this->dealer_id。
解决方案
方案1:将逻辑移至prepareForValidation方法
class CreateLeadRequest extends FormRequest { private $dealer; protected function prepareForValidation() { $this->dealer = Dealer::findOrFail($this->dealer_id); } }
方案2:在需要使用的方法内直接获取(如验证规则)
class CreateLeadRequest extends FormRequest { public function rules() { $dealer = Dealer::findOrFail($this->dealer_id); return [ // 示例:基于dealer属性设置验证规则 'contact_email' => 'email|max:' . $dealer->allowed_email_length, ]; } }
内容的提问来源于stack exchange,提问作者farjam
相关产品推荐
相关产品推荐

