/**
  * 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;
 }