Como crear URLs Amigables con Base de Datos MySQL en Laravel 5.6

Laravel

Demo Github

Si tienes un proyecto en Laravel con muchas páginas creadas dinámicamente desde la Base de Datos, por ejemplo si tienes una página sobre Dulces o Postres y dentro de ella  tienes una página productos, cada producto tiene que tener su propia página en donde puedas mostrar todos los detalles, como el precio, stock, fotos, etc. Esto hace que cada página maneje su propia URL, en este artículo te vamos a enseñar como crear dinámicamente una URL desde la Base de Datos para cada producto, vamos con el artículo.

Base de Datos

Creamos una tabla en donde añadiremos una columna llamada url, en esta columna almacenaremos las urls amigables para las páginas

Cuando llenos nuestra tabla postres con productos, deberíamos tener la siguiente estructura

Laravel Deployment

Crear Producto

Algo importante, a la hora de crear un nuevo producto en la base de datos es generar las url amigables en base al nombre del producto, para ello usamos la función str_slug() que nos ofrece Laravel en su lista de Helpers, por ejemplo en nuestro método store() para guardar un nuevo producto le pasamos la función str_slug() al campo nombre que lo recibimos desde nuestra vista que contiene un formulario para Crear nuevo producto.

Si creamos un postre con el nombre Torta de Chocolate, lo que hará la función str_slug() es convertirlo a torta-de-chocolate y se guarda en la Base de datos.

Creamos el archivo ProductosController.php ustedes le pueden poner el nombre que deseen y agregamos

Ahora vamos a crear las rutas para poder visualizar las url amigables en la barra de navegación, vamos al archivo de rutas web.php y agregamos

Ahora creamos nuestro modelo llamado Productos.php y accedemos a la tabla postres para usar los campos correspondientes

Ahora vamos a crear un controlador para la vista de los productos y listarlos en esta vista, creamos controlador con el nombre FrontController.php y agregamos la función productodetalle($url) en esta función pasamos la url que llega desde la ruta productodetalle/{url} que creamos en nuestro archivo web.php y aparecerá en la barra de navegación

Por ultimo vamos listar los productos en nuestra vista llamada con el nombre de archivo welcome.blade.php y colocamos {{ url(‘productodetalle’, [$pro->url]) }} que es como pasara la url con los datos del producto a una nueva pagina llamada productodetalle.blade.php en donde visualizaremos todos los detalles del producto

Ahora crearemos una vista llamada productodetalle.blade.php y llamamos a todos los datos del producto que deseamos mostrar

De esta manera, podemos crear miles de productos o registros en nuestra base de datos y se le va generar siempre una url amigable diferente para cada producto, pueden usar funciones adicionales para manipular la creación de la url y evitar nombres duplicados.

Nota

Existen otras maneras de crear url amigables en Laravel, esta es una de ellas, quizás en próximas versiones de Laravel 5.6 en adelante, no permita esta manera de crear url amigables, te pedimos encarecidamente que escribas en los comentarios cual es la nueva forma de hacerlo, asi estaremos contribuyendo con los demás desarrolladores web que también buscan aprender.

 

Síguenos en las Redes Sociales para que no te pierdas nuestros próximos contenidos.

Newsletter

Suscríbete a Nuestro Boletín de Novedades:

(Luego de la suscripción no te va salir ningun mensaje. Solo revisa tu bandeja de Correo para confirmar tu suscripción)
* indicates required