/
home
/
sjslayjy
/
public_html
/
mosaram
/
app
/
Rules
/
Upload File
HOME
<?php namespace App\Rules; use Illuminate\Contracts\Validation\Rule; use Illuminate\Http\Request; use Illuminate\Support\Str; class OneOf implements Rule { public $oneOf = []; public $request = null; public $message = ""; /** * Create a new rule instance. * * @return void */ public function __construct(Request $request, array $oneOf, string $message = "") { $this->oneOf = $oneOf; $this->request = $request; $this->message = $message; } /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { $count = 0; foreach ($this->oneOf as $param) { if($this->request->has($param) && $this->request->$param != null){ $count++; } } return count($this->oneOf) && ($count === 1) ? true : false; } /** * Get the validation error message. * * @return string */ public function message() { $i = 1; $length = count($this->oneOf); $fieldNames = null; foreach($this->oneOf as $fieldName) { if($i < $length) { $fieldNames .= str_replace('_', ' ', Str::title($fieldName)) . ', '; } else { $fieldNames .= str_replace('_', ' ', Str::title($fieldName)); } $i++; } return strlen(trim($this->message)) ? $this->message : "Only one of these fields should be used: $fieldNames."; } }