Laravel 5.4 #16 : Agregar foto de perfil a los usuarios

Que los usuarios puedan agregar su foto de perfil es una funcionalidad que cualquier web tiene. Por eso vamos a agregarla a nuestro proyecto.

Primero de todo generamos una migración, ya que tenemos que agregar un nuevo campo a la base de datos. para generar una migración puedes mirar cómo se hace en otros posts míos. El contenido que deberá tener nuestra nueva migración será:

Si te fijas, tiene un valor por defecto, por tanto deberemos poner el nombre de la imagen que queramos que salga por defecto y esta imagen deberá estar en public/uploads/avatars . Ejecutamos la migración.

 

Ahora vamos a crear las rutas:

La primera ruta será la que muestre el perfil del usuario y la segunda será la que nos permitirá editarlo.

 

Creamos el controlador UserController.php :

El método profile envía los datos del usuario logueado a la vista.

El método update_profile valida que sea una imagen lo que enviamos, la sube a la carpeta public/uploads/avatars  y después guarda el nombre en la base de datos y volvemos al perfil.

La vista del perfil contiene la imagen y nombre de usuario y un formulario para cambiar la imagen de perfil:

 

Y para acabar, añadimos en el header la imagen y en el desplegable un link hacia el perfil del usuario logueado:

 

Esta entrada era más que nada para ver como subir archivos con Laravel a nuestro servidor y ya hemos visto que es muy simple. Esto también se puede aplicar para otros tipos de ficheros, pero, claro, con diferentes validaciones.

También se podrían añadir más campos (no solo el avatar) para modificar y mejorar la estructura, poniendo el formulario en otra página separada o en una ventana modal. Ésto, a lo mejor, lo hago en otra entrada más adelante.

-

– https://devdojo.com/episode/laravel-user-image

– http://laravel-tricks.com/tricks/laravel-54-upload-image-with-validation-example


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

5 comentarios en “Laravel 5.4 #16 : Agregar foto de perfil a los usuarios

  1. Hola!, tengo una duda, hasta este punto todo perfecto en el proyecto, solo que si agrego estas lineas: «avatar) }}»>
    Perfil» en el layout sin que haya ningun usuario logueado me marca este error: «ErrorException
    Trying to get property of non-object (View: C:\xampp\htdocs\proyectoLaravel\resources\views\layouts\app.blade.php) (View: C:\xampp\htdocs\proyectoLaravel\resources\views\layouts\app.blade.php)», pero si quito las lineas e inicio sesión, y agrego las lineas de nuevo ahora ya con el usuario logueado todo marcha perfecto, mi duda es si asi es como deberia funcionar o que estoy haciendo mal, gracias por tu tiempo y espero puedas apoyarme, muy bueno tu curso 😀

    1. Hey Billy!

      Es porque no lo estás poniendo en el lugar correcto. Si te fijas en el header hay este código:
      @if (Auth::guest())
      // código que ve un usuario no logueado
      @else
      // código que ve un usuario logueado
      @endif

      Pues tienes que ponerlo en la parte de usuario loguedo (en el else), porque si no está intentando acceder al usuario y cuando no estás logueado, no existe.

      Saludos!

    1. Hola Jonathan! Por lo que entiendo, tendrás que transformar la imagen a base64 desde JS (si la llamada la haces desde frontend) o PHP (si la llamada la haces desde backend). Puedes buscar por Google cómo hacerlo. Espero que te sea de ayuda.

Deja una respuesta

  Acepto la política de privacidad