public function update(Request $request, $id) { $input = \Input::all(); $validator = Validator::make($input, ['server_id_text' => 'required|string|min:1', 'server_type_select' => 'required|string|min:1', 'host_text' => ["required", "Regex:/((https?|ftp)\\:\\/\\/)?([a-z0-9+!*(),;?&=\$_.-]+(\\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?(([a-z0-9-.]*)\\.([a-z]{2,6}))|(([0-9]{1,3}\\.){3}[0-9]{1,3})(\\:[0-9]{2,5})?(\\/([a-z0-9+\$_-]\\.?)+)*\\/?(\\?[a-z+&\$_.-][a-z0-9;:@&%=+\\/\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?/i"], 'config.' . $input['server_type_select'] . '.port' => 'sometimes|required|numeric|min:1', 'config.' . $input['server_type_select'] . '.scheme' => 'sometimes|required|string|min:1', 'config.' . $input['server_type_select'] . '.username' => 'sometimes|required|string', 'config.' . $input['server_type_select'] . '.driver' => 'sometimes|required|string', 'config.' . $input['server_type_select'] . '.default-database-name' => 'sometimes|required|string']); if ($validator->fails()) { $messages = $validator->messages()->getMessages(); $flash_message = ''; foreach ($messages as $key => $value) { switch ($key) { case 'server_id_text': $flash_message = 'Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'server_type_select': $flash_message = 'Type is not selected'; break; case 'host_text': $flash_message = 'Host format is invalid (use subdomain.domain.tld)'; break; case 'config.' . $input['server_type_select'] . '.port': $flash_message = 'Port must be an integer and larger than 0'; break; case 'config.' . $input['server_type_select'] . '.scheme': $flash_message = 'Protocol is not selected'; break; case 'config.' . $input['server_type_select'] . '.username': $flash_message = 'User Name is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'config.' . $input['server_type_select'] . '.driver': $flash_message = 'Driver is blank or contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; case 'config.' . $input['server_type_select'] . '.default-database-name': $flash_message = 'Default is blank or Database Name contains invalid characters (use a-z, A-Z, 0-9, . and -)'; break; } break; } Session::flash('flash_message', $flash_message); Session::flash('flash_type', 'alert-danger'); return redirect('/v1/servers/' . $id . '/edit')->withInput(); } try { $input = \Input::all(); $type = $input['server_type_select']; $input_config = $input['config'][$type]; $input['config_text'] = $input_config; if ($type == 'db') { $input['server_type_id'] = 1; } if ($type == 'web') { $input['server_type_id'] = 2; } if ($type == 'app') { $input['server_type_id'] = 3; } unset($input['_method']); unset($input['_token']); unset($input['config']); unset($input['server_type_select']); $server = Server::find($id); $server->update($input); $result_text = 'The server "' . $input['server_id_text'] . '" was updated successfully!'; $result_status = 'alert-success'; $_redirect = '/'; $_redirect .= $this->_prefix; $_redirect .= '/servers'; return \Redirect::to($_redirect)->with('flash_message', $result_text)->with('flash_type', $result_status); } catch (QueryException $e) { Session::flash('flash_message', 'An error occurred! Check for errors and try again.'); Session::flash('flash_type', 'alert-danger'); return \Redirect::to('/v1/servers/' . $id . '/edit')->withInput(); } }