segment(2); $email_address_rule = 'required|email|unique:emails'; if($id){ $email_address_rule = 'required|email|unique:emails,id,'.$id; } $rules = [ 'email_address' => $email_address_rule, 'email_name' => 'required', 'password' => 'required', 'sending_protocol'=>'required_if:sending_status,on', ]; $driver = $this->input('sending_protocol'); $driver_rules = $this->getDriver($driver); $rules = array_merge($rules,$driver_rules); return $rules; } public function getDriver($serviceid){ $rules = []; $mail_services = new \App\Model\MailJob\MailService(); $mail_service = $mail_services->find($serviceid); if($mail_service){ $short = $mail_service->short_name; $rules = $this->getRules($short); } return $rules; } public function getRules($short){ $rules = []; switch ($short){ case "mailgun": $rules = [ 'domain'=>'required', 'secret'=>'required', ]; return $rules; case "mandrill": $rules = [ 'secret'=>'required', ]; return $rules; default : return $rules; } } }