/** * * @param \Request $input * @return static */ public static function createFromInput(Request $input, $id = null, $save = true) { $validator = \Validator::make($input->all(), static::$validationRules, static::$validationMessages); if ($validator->fails()) { throw new \App\Exceptions\Validation($validator); } $obj = static::findOrNew($id); foreach (static::$availableFields as $fieldName) { if ($input->has($fieldName)) { $obj->setAttribute($fieldName, $input->get($fieldName)); } } $imageFields = static::$imageFields; foreach ($imageFields as $fieldName) { if ($input->hasFile($fieldName)) { try { $file = $input->file($fieldName); if (!$file->isValid()) { $validator->errors()->add($fieldName, "Invalid Image"); continue; } $dbFile = Image::createFromInput($file); $obj->setAttribute($fieldName, $dbFile->hash); } catch (\Exception $ex) { $validator->errors()->add($fieldName, "Invalid Image"); } } } if ($validator->fails()) { throw new \App\Exceptions\Validation($validator); } if ($save) { $obj->save(); } return $obj; }