/** * Alimenta la vista tras haber pulsado el botón para grabar un registro ya * existente modificándolo. * * @return $this|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function update() { //Recuperamos el contenido del request: $request = \Request::instance(); //Guardamos los datos importantes del request en variables independientes //para que sean más manejables: $id = $request->get('id'); $tabla = $request->get('tabla'); //Inicializamos algunos flag y variables necesarias: $grabado = null; $validacion = null; $ok = null; //Al igual que en altas, según la tabla, cambiará el procedimiento, y nos iremos //a los métodos específicos de cada modelo, algunos, diseñados para esta opción de //panel de administración, ya que es diferente del formulario genérico de usuario: switch ($tabla) { case 'categorias': $validacion = Categoria::validar($request); if (!$validacion->fails()) { $grabado = Categoria::modificar($request, $id); } break; case 'peticiones': $validacion = Peticion::validar($request); if (!$validacion->fails()) { $grabado = Peticion::modificar($request, $id); } break; case 'productos': $validacion = Producto::validar($request); if (!$validacion->fails()) { $grabado = Producto::modificar($request, $id); } break; case 'subcategorias': $validacion = Subcategoria::validar($request); if (!$validacion->fails()) { $grabado = Subcategoria::modificar($request, $id); } break; case 'usuarios': $validacion = Usuario::validarAdmin($request); if (!$validacion->fails()) { $grabado = Usuario::modificarAdmin($request, $id); } break; case 'usuarios_productos': $validacion = Usuario_producto::validar($request); if (!$validacion->fails()) { $grabado = Usuario_producto::modificarAdmin($request, $id); } } //Recargamos los datos para alimentar los combos y cabeceras de la vista: $resultados = DB::table($tabla)->get(); $campos = DB::getSchemaBuilder()->getColumnListing($tabla); if ($grabado) { //Si se ha grabado, devolveremos la vista sin errores: $ok = view('cpanel', ['exito' => true, 'editar' => false, 'nuevo' => false, 'tabla' => $tabla, 'id' => '', 'campos' => $campos, 'resultados' => $resultados, 'tablas' => DB::select('SHOW TABLES'), 'ddbb' => 'Tables_in_' . env('DB_DATABASE')]); } else { if ($validacion->fails()) { //Si ha fallado la validación pasaremos los errores de validación: $ok = redirect()->back()->withInput()->withErrors($validacion->errors()); } else { //La única opción que nos queda es qeu haya pasado la validación pero nos //falle la grabación en base de datos, con lo que preparamos la alimentación //de la vista para un error genérico: $ok = view('cpanel', ['exito' => false, 'editar' => false, 'nuevo' => false, 'tabla' => $tabla, 'id' => '', 'campos' => $campos, 'resultados' => $resultados, 'tablas' => DB::select('SHOW TABLES'), 'ddbb' => 'Tables_in_' . env('DB_DATABASE')]); } } return $ok; }