🎉 Acceso anticipado Black Friday: Hasta un 80% de descuento en nuestros cursos

6d: 12h: 5m:57s'
Vladimir Kozisck
Vladimir Kozisck
Laravel
Comparte:

Descargar PDF de ruta externa al proyecto y enviar 2 parametros a una funcion

Muchas graicas por tus aportaciones, tnego una consulta por favor, quiero descargar un pdf, que esta en una ruta externa al proyecto, entonces en mi aplicacion, al momento de hacer click en descargar en una tabla dinamica, que me trae todos los documentos que tengo en mi base de datos, quiero enviar por parametros, la ruta y el nombre del archivo? como puedo enviar 2 parametros a mi controlador y como los recibo en mi funcion dentro del controlador y en el web route, son funciones aparte del resourse, como estarian definidas?
Jorge Davila
Jorge Davila (838 xp)
Las rutas de laravel se basan en segmentos. Un segmento seria algo asi "/proyectos". Un segmento puede contener una variable, por ende, es posible pasarle mas de una variable a una ruta, quedando algo como lo siguiente:

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});
Como bien se explica en ese  este link https://laravel.com/docs/5.7/routing#required-parameters se inyectan en el orden en que se encuentran integrados en la ruta y asi mismo se inyectan al controlador, sin importar el nombre de la variable que asignes.

Ahora ,ya que lo que estas pidiendo te generaria una ruta sucia te recomiendo un slug para el link del archivo.

Simplemente agrega a la tabla donde tienes las rutas un slug, y en tu ruta agregas dicho parametro, esto para evitar tener lo siguiente:

http://app.test/post/1/comments/facebook.com/algo/otracosa/algomas.

Un slug resolveria varios problemas, ya que simplemente pasas el slug:

http://app.test/post/laravel-better-code/comments/my-comment.


Respecto a la parte de recibir las variables simplemente debes usar una variable en tu controlador por cada parametro. En caso que sean muchos puedes usar la funcion de php func_get_args(), de la siguiente manera:

public function index(Request $request,$post,$comment)
{


}

o utilizando la funcion:


public function index(Request $request)
{
  $params=array_slice(func_get_args(),1); 
}



Esto te devolveria todos los parametros que no son el primero, por eso se utiliza la funcion array_slice ahi. Espero te sirva