Logo Studenta

manual-laravel-5

¡Este material tiene más páginas!

Vista previa del material en texto

Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 1 de 163
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 2 de 163
Introducción:	Manual	de	Laravel	5
Manual	del	framework	PHP	Laravel,	centrándonos	en	versión	Laravel	5	(concretamente	Laravel	5.1),	que
nos	trae	diversas	mejoras	en	rendimiento	y	cambios	en	la	organización	de	los	archivos	y	proyectos.	Es	un
manual	que	explica	paso	por	paso	los	elementos	más	importantes	que	forman	parte	de	este	popular
framework,	a	la	vez	que	nos	ofrece	una	guía	para	comenzar	a	crear	aplicaciones	web	basadas	en	él.
Comenzamos	con	la	instalación,	usando	una	máquina	virtual	llamada	Homestead,	que	es	la	plataforma
oficial	de	desarrollo	de	Laravel	5.	Luego	usamos	Composer	para	bajarnos	e	instalar	el	framework	y	a	partir
de	ahí	ya	nos	dedicamos	a	analizar	el	framework	en	detalle.
En	este	manual	usamos	la	versión	de	Laravel	5.1	que	además	es	la	primera	versión	del	framework	ofrecida
como	LTS	(Long	Term	Support),	lo	que	te	asegura	actualizaciones	de	seguridad	para	los	próximos	años.
Encuentras	este	manual	online	en:
http://desarrolloweb.com/manuales/manual-laravel-5.html
http://desarrolloweb.com/manuales/manual-laravel-5.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 3 de 163
Autores	del	manual
Las	siguientes	personas	han	participado	como	autores	escribiendo	artículos	de	este	manual.
Miguel	Angel	Alvarez
Miguel	es	fundador	de	DesarrolloWeb.com	y	la	plataforma	de	formación	online
EscuelaIT.	Comenzó	en	el	mundo	del	desarrollo	web	en	el	año	1997,
transformando	su	hobby	en	su	trabajo.
Carlos	Ruiz	Ruso
Consultor	tecnológico	para	el	desarrollo	de	proyectos	online	especializado	en
WordPress	y	el	framework	Laravel.
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 4 de 163
Instalación	y	configuración	de	Laravel	5
En	esta	primera	parte	del	manual	te	enseñamos	a	instalar	Laravel	5	y	a	configurar	tu	entorno	de	trabajo.
Abordamos	con	detalle	la	plataforma	oficial	para	desarrollo	de	Laravel,	basada	en	una	máquina	virtual
Vagrant,	con	el	nombre	de	Homestead.	Esta	alternativa	te	ofrece	las	condiciones	para	desarrollar	más
parecidas	a	un	entorno	de	producción	y	es	la	opción	recomendada	para	tu	entorno	de	desarrollo,	que	te
ayudará	a	familiarizarte	con	la	administración	de	servidores	y	evitará	problemas	cuando	publiques	tu	web	en
el	servidor	definitivo.
Homestead	de	Laravel
Procedimiento	de	instalación	del	entorno	de	desarrollo	ideal	para	la	creación	de	aplicaciones
usando	el	framework	PHP	Laravel	y	la	virtualización	de	una	máquina	con	Vagrant	y	Homestead.
En	este	artículo	vamos	a	ofrecer	las	pautas	para	contar	con	el	mejor	entorno	de	desarrollo	posible	para
Laravel	5,	el	más	profesional,	fácil	de	instalar	y	de	mayor	versatilidad,	ayudándonos	de	la	virtualización	de	la
máquina	de	desarrollo	y	Vagrant.
La	fórmula	tiene	el	nombre	de	Homestead,	una	herramienta	oficial	creada	por	el	equipo	de	Laravel	para
facilitar	la	vida	a	los	desarrolladores	que	quieran	usar	este	framework	PHP	para	comenzar	un	proyecto
rápidamente.
La	idea	es	que	los	desarrolladores	tengamos	que	implementar	el	menor	número	de	configuraciones	en
nuestras	máquinas	y	que	con	dos	o	tres	comandos	podamos	conseguir	todo	lo	que	necesitaría	el	entorno	de
desarrollo	más	exigente.
Nota:	Con	este	texto	damos	inicio	al	Manual	de	Laravel	5,	en	el	que	pretendemos	enseñar	a	los	lectores
a	trabajar	con	este	importante	framework	PHP.	Así	que	siéntate	cómodo	y	aprovecha	para	comenzar
con	nosotros	esta	zambullida	en	profundidad	a	Laravel	5.1.
Qué	es	exactamente	Homestead
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 5 de 163
Es	una	"Box	de	Vagrant".	Por	si	no	lo	sabes,	Vagrant	es	una	capa	por	encima	de	Virtualbox	(o	de	otros
sistemas	de	virtualización	como	VMWare)	que	nos	sirve	para	crear	entornos	de	desarrollo	y	las	Box	en	su
terminología	son	imágenes	de	sistemas	operativos	ya	instalados.	Generalmente	vienen	"peladas",	tal	como
tendríamos	el	ordenador	si	hubiéramos	acabado	de	instalar	el	sistema	operativo	en	ese	momento.	O	en
algunos	casos,	como	Laravel	Homestead,	ya	configurados	con	distintos	paquetes	de	software.
Homestead	te	instala	software	como:	Ubuntu,	PHP,	HHVM,	Nginx,	MySQL,	PostgreSQL,	NodeJS,	Redis	y
algunas	librerías	como	Memcached,	Laravel	Envoy,	Beanstalkd...
Por	qué	Homestead
Porque	la	comunidad	de	creadores	de	Laravel	quieren	acercarte	al	framework.	Facilitarte	no	solo	la	entrada
como	desarrollador	de	Laravel,	sino	también	proporcionarte	el	entorno	de	desarrollo	más	adecuado	para
acometer	cualquier	tipo	de	proyecto.
Realmente	puedes	contar	con	Laravel	funcionando	en	un	Xampp,	Mamp	o	similares,	pero	si	virtualizas
tendrás	varias	ventajas	como	contar	con	un	entorno	mucho	más	parecido	al	de	producción,	independiente
de	otros	proyectos	con	los	que	estés	desarrollando	y	además	el	mismo	sistema,	con	los	mismos	paquetes	de
software.	No	tiene	sentido	extenderse	mucho	en	las	ventajas	de	los	entornos	virtualizados,	porque	ya	hemos
hablado	de	ellos	en	otras	ocasiones.	Pero	piensa	además	que	puedes	conseguir	todo	eso	con	la	facilidad	de
lanzar	unos	pocos	comandos	para	generar	automáticamente	toda	la	infraestructura	perfectamente
configurada.
Qué	necesitas
Instalar	VirtualBox	como	sistema	de	virtualización,	o	VMware	si	lo	prefieres	(aunque	en	ese	caso	tendrías
que	instalar	un	plugin	adicional).	Luego	instalas	Vagrant.	Ambos	programas	son	gratuitos	y	multiplataforma.
Una	vez	instalados	ambos	programas	(Primero	se	recomienda	instalar	Virtualbox	y	luego	Vagrant)	se	debe
descargar	la	caja	"Box"	de	Homestead,	para	lo	que	lanzarás	el	siguiente	comando	de	consola.
vagrant box add laravel/homestead
Ese	comando	lo	podrás	lanzar	desde	cualquier	carpeta,	desde	el	terminal	de	línea	de	comandos,	claro	está.
Nota:	Si	tienes	una	versión	antigua	de	Vagrant	quizás	tengas	que	darle	la	URL	completa	de	la
localización	de	la	Box.
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
Instalar	Homestead
El	tercer	paso	sería	instalar	el	propio	Homestead.	Para	ello	usaremos	la	box	que	acabamos	de	descargar	y
Vagrant.	Pero	necesitamos	un	archivo	de	configuración	que	se	encuentra	en	Github	que	contiene	toda	la
http://www.desarrolloweb.com/articulos/que-es-vagrant.html
http://www.desarrolloweb.com/en-directo/entorno-desarrollo-vagrant-programadorio-8841.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 6 de 163
información	de	configuración	que	Vagrant	necesitaría	para	generar	y	aprovisionar	la	máquina	virtual	para
desarrollar	con	Laravel.
Para	ello	abrimos	un	terminal	y	nos	situamos	en	nuestra	carpeta	de	proyectos	habitual	y	desde	allí
clonaremos	el	repositorio	de	Homestead	con	Git.
git clone https://github.com/laravel/homestead.git Homestead
Nota:	Ese	comando	clona	un	repositorio.	El	repositorio	está	en	Github	en	la	ruta
https://github.com/laravel/homestead.git.	El	parámetro	final	del	comando	anterior	git	clone	que	está
definido	como	"Homestead"	es	la	carpeta	donde	va	a	colocar	los	archivos	del	repositorio	que	estás
clonando.	Si	quisieras	podrías	cambiarle	el	nombre	a	la	carpeta	de	destino,	por	ejemplo,	"proyecto-
prueba"	en	vez	de	"Homestead",	para	lo	que	el	comando	sería	el	siguiente:
git clone https://github.com/laravel/homestead.git proyecto-prueba
La	estructura	de	carpetas	que	tengas	tú	en	tu	ordenador	de	momento	es	indiferente	y	responderá	a	tus
propias	preferencias.	Lo	que	te	interesa	es	todo	lo	que	tiene	el	repositorio,	que	te	vas	a	descargar	con	el
comando	"git	clone".	El	lugar	donde	esté	localizada	la	carpeta	donde	te	descargas	el	repo	de	Homestead
es	lo	de	menos,	por	ejemplo	muchas	personas	prefieren	colocarla	en	la	carpeta	"Dropbox"	para	que
cuando	se	realicen	cambios	en	el	proyecto	se	realicen	copias	de	seguridad	automáticas	en	la	nube.
Dentro	de	ese	repositorio	clonado	tenemos	en	un	archivobash	con	el	nombre	"init.sh"	que	tiene	el	código
con	los	comandos	para	crear	el	archivo	de	configuración	Homestead.yaml.	Simplemente	lo	tienes	que
ejecutar,	con	el	comando:
bash init.sh
Obviamente	el	comando	"bash	init.sh"	lo	debes	ejecutar	desde	la	ruta	donde	se	encuentra	el	archivo	init.sh,
en	la	carpeta	del	repositorio	que	acabas	de	clonar.	Verás	que	simplemente	te	da	un	mensaje	de	respuesta
"Homestead	initialized!".	Eso	quiere	decir	que	ha	ido	bien	y	ha	podido	crear	los	archivos	de	configuración
necesarios	para	los	siguientes	pasos.
Entre	los	arhivos	de	configuración	que	se	crean	al	ejecutar	el	init.sh	hay	uno	que	necesitarás	editar,	llamado
"Homestead.yaml".	Este	archivo	de	configuración	lo	encontrarás	en	tu	carpeta	personal	(la	de	tu	usuario
dentro	de	tu	sistema	operativo)	y	dentro	de	ella	en	la	carpeta	oculta	".homestead".	Si	lo	abres	podrás
encontrar	los	datos	de	configuración	de	la	máquina	virtual	Homestead,	el	servidor	de	desarrollo	virtualizado
que	vamos	a	crear,	que	incluye	datos	como	la	IP	del	servidor,	las	CPUs,	memoria	asignada,	carpetas	que	se
compartirán	entre	la	máquina	de	desarrollo	y	el	ordenador	anfitrión	(nuestro	ordenador	físico)	y	cosas	así.
Nota:	Por	ejemplo	en	Mac	mi	directorio	del	usuario	personal	es	/Users/midesweb	y	la	carpeta
.homestead	estará	por	tanto	en	/Users/midesweb/.homestead
https://github.com/laravel/homestead.git
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 7 de 163
En	un	principio	necesitamos	tocar	pocas	cosas	del	Homestead.yaml,	porque	la	mayoría	ya	se	ha	configurado
automáticamente,	acorde	con	nuestro	sistema	operativo	gracias	al	archivo	init.sh,	pero	podrás	desear
cambiar	los	siguientes	item:
IP	del	servidor	virtual,	por	defecto	aparece	ip:	"192.168.10.10".
Llave	para	la	conexión	SSH	con	la	máquina	virtual	(ver	información	más	abajo)
Folders,	que	son	las	carpetas	que	vas	a	tener	en	tu	sitio,	mapeadas	en	dos	direcciones,	el	servidor
virtual	y	el	ordenador	local	(luego	te	decimos	cómo).
Sites,	para	definir	el	nombre	del	sitio	para	el	virtualhost.
Crear	la	llave	de	SSH
Esta	es	la	llave	para	la	conexión	con	el	servidor	virtual	por	línea	de	comandos.	Si	no	tienes	una	la	puedes
crear.	Desde	Mac	o	Linux	es	tan	sencillo	como	lanzar	el	siguiente	comando:
ssh-keygen -t rsa -C "you@homestead"
Desde	Windows	la	recomendación	es	usar	el	"Bash	de	Git"	(el	programa	de	terminal	que	te	viene
incorporado	cuando	instalas	Git)	y	lanzar	el	mismo	comando	anterior.	Aunque	también	podrías	usar	el
popular	software	PuTTY	y	PuTTYgen.
En	el	anterior	comando	no	necesitas	editar	nada,	lo	pones	tal	cual.	Enseguida	verás	que	el	programa	que	te
genera	la	clave	te	pide	la	ruta	donde	va	a	colocar	esta	key	generada.	El	propio	programa	te	muestra	una	ruta
predeterminada	donde	sugiere	se	coloquen	las	llaves.	Podemos	pulsar	enter	sin	escribir	nada	para	aceptar
esa	ruta	o	bien	escribir	cualquier	otra	ruta	donde	se	generará	la	clave.	Puedes	poner	lo	que	quieras,	con	tal
que	te	acuerdes	de	la	ruta	que	has	seleccionado.
Nota:	en	cuanto	a	la	ruta	donde	se	van	a	colocar	las	claves	es	totalmente	personalizable.	Pon	la	que
quieras,	simplemente	acuérdate	donde	están	los	archivos.	Para	ser	más	específicos	y	por	si	alguien	se
pierde,	pueden	darse	tres	casos:
Que	te	parezca	bien	la	ruta	donde	te	sugiere	que	va	a	crear	las	claves.	En	ese	caso	puedes
apretar	enter	y	listo.	En	mi	caso	la	ruta	donde	se	colocarían	las	claves	de	manera
predeterminada	es	/Users/midesweb/.ssh/id_rsa.	Por	tanto	se	crearán	los	archivos	id_rsa	e
id_rsa.pub	en	la	carpeta	/Users/midesweb/.ssh.
Que	escribas	el	nombre	de	un	archivo	simplemente,	algo	como	"homesteadkey".	En	ese	caso
te	creará	las	claves	en	el	directorio	donde	estás	situado	cuando	hiciste	el	comando	ssh-keygen,
archivos	homesteadkey	y	homesteadkey.pub.
Que	que	escribas	una	ruta	absoluta,	algo	como	/Users/midesweb/.ssh/nuevaclave,	en	cuyo
caso	te	colocará	la	clave	en	esa	ruta	absoluta,	tanto	la	clave	privada
/Users/midesweb/.ssh/nuevaclave	como	la	pública	/Users/midesweb/.ssh/nuevaclave.pub
El	programa	de	generar	las	key	te	pedirá	también	insertar	una	frase	como	clave,	que	puedes	poner	la	que
desees.	O	bien	una	cadena	vacía	si	quieres	ahorrarte	indicar	una	frase	que	te	puedas	olvidar.	Como	es	solo
para	trabajar	en	local	sería	suficiente.
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 8 de 163
Como	decíamos,	una	vez	generada	la	clave	lo	que	te	interesa	es	saber	la	ruta	donde	se	ha	colocado,	que
tendrás	que	usar	para	configurar	el	archivo	Homestead.yaml.
El	lugar	donde	vas	a	tener	que	introducir	la	ruta	de	la	clave	será	algo	como	esto:
authorize: ~/.ssh/id_rsa.pub
keys:
 - ~/.ssh/id_rsa
Esa	ruta	es	la	que	tienes	que	configurar	según	la	localización	de	las	llaves	creadas.	Generalmente	si
seleccionaste	la	carpeta	predeterminada	que	sugería	el	comando	ssh-keygen	ni	siquiera	tendrías	que	editar
nada.	Si	las	claves	las	guardaste	en	otro	lugar,	entonces	tendrás	que	indicarlo	aquí.	De	todos	modos,	no
tiene	ninguna	complicación,	es	saber	la	ruta	donde	está	tu	clave	e	indicarla	en	el	Homestead.yaml.
Nota:	Recuerda	que	~/	es	un	alias	de	tu	ruta	personal	(ver	otra	nota	más	abajo	donde	se	habla	sobre
este	tema).	Pero	si	te	lía	lo	puedes	cambiar	por	una	ruta	absoluta	y	punto.
Carpetas	del	servidor	virtual	y	mapeo	a	las	carpetas	locales
Una	de	las	características	de	los	entornos	con	Vagrant	es	que	hay	determinadas	carpetas	del	servidor	virtual
(invitado)	que	están	mapeadas	a	directorios	locales	de	tu	máquina	real	(anfitrión).	Esto	te	permite	editar
archivos	de	tu	proyecto	como	los	editarías	en	cualquier	otra	situación,	con	tus	editores	de	código	preferidos,
trabajando	en	local	como	si	lo	hicieras	con	un	sistema	más	tradicional	tipo	Xampp	o	Mamp,	Wamp,	etc.	Las
carpetas	locales	están	enlazadas	con	las	carpetas	del	servidor,	por	lo	que	no	tienes	que	subir	los	archivos	por
FTP,	SCP	ni	nada	parecido.	Cuando	modifiques	algún	archivo,	o	crees	archivos	nuevos	en	tu	carpeta	local,
automáticamente	esos	cambios	serán	producidos	en	las	carpetas	enlazadas	del	servidor	virtualizado.	Podrías
configurar	tantas	carpetas	compartidas	como	necesites	en	tu	proyecto.
Ahora	en	el	archivo	Homestead.yaml	tendrás	que	definir	esa	estructura	de	carpetas,	que	se	adaptará	a	tus
costumbres	habituales.	Como	hemos	comentado	antes,	tendrás	una	carpeta	de	tu	ordenador	donde	guardas
tus	proyectos	y	seguirá	siendo	así.	Por	tanto,	es	simplemente	guardar	este	proyecto	en	una	carpeta	en	una
ruta	habitual	para	ti.
folders:
 - map: ~/carpeta_de_proyectos/proyecto_x/codigo
 to: /home/projects
En	este	lugar	colocamos	en	"map"	el	valor	de	nuestra	carpeta	en	el	ordenador	anfitrión	y	en	"to"	la	ruta	de
la	carpeta	del	ordenador	virtualizado	que	vamos	a	crear	con	Vagrant	y	Homestead.	La	carpeta	que	estás
indicando	en	"map",	que	corresponde	con	tu	ordenador	real,	debería	existir.
Ten	en	cuenta	que	en	una	máquina	virtual	de	Homestead	podrías	mantener	varios	proyectos	Laravel,	por
tanto	no	sería	descabellado	que	usases	una	declaración	Folders	abierta	a	esa	posibilidad,	donde	mapeas	una
http://www.desarrolloweb.com/articulos/mantener-proyectos-homestead.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 9 de 163
carpeta	de	proyectos	en	el	anfitrión	a	otra	de	proyectos	en	la	máquina	virtual.
folders:
 - map: ~/carpeta_instalacion_homestead/proyectos/
 to: /home/vagrant/proyectos/
Nota:	Una	aclaración	acerca	de	las	rutas	para	los	de	Windows.	"~/"	corresponde	con	la	carpeta	raíz	de
tu	usuario.	Por	ejemplo,	si	tu	usuario	(con	el	que	entras	en	Windows	es	·micromante"	esa	ruta
correspondería	con	una	carpeta	como	"C:/Users/micromante".	La	carpeta	"~/.homestead"
correspondería	físicamente	con	"C:/Users/micromante/.homestead".	Si	usas	el	terminal	básico	del
Windows	no	reconocerá	la	ruta	~/,	así	que	tendrás	que	usar	la	ruta	real	de	tu	carpeta	de	usuario,	la	física
o	ruta	real.	Si	usas	un	terminal	un	poco	mejor,	por	ejemplo	el	Git	Bash	sí	que	te	reconocerá	ese	nombre
lógico~/	y	te	llevará	a	tu	carpeta	de	usuario,	sea	cual	sea	tu	nombre	de	usuario,	igual	que	ocurre	en	el
terminal	de	Linux	o	Mac.
De	nuevo,	no	hay	necesidad	de	colocar	algo	específico	en	la	sección	folders,	sino	que	será	tal	como	tú
desees	organizar	las	carpetas,	tanto	en	el	servidor	Homestead	como	en	tu	ordenador	local.
Definir	la	configuración	de	los	sitios	que	vamos	a	albergar	en	esta	máquina
Homestead
Nos	queda	un	valor	que	configurar,	que	es	el	nombre	del	host	virtual	que	nos	va	a	configurar	Homestead	en
esta	máquina	virtual	que	estamos	a	punto	de	crear.	Este	host	virtual	o	"virtualhost"	lo	usaremos	para	entrar
en	el	proyecto	desde	un	navegador,	con	un	nombre	de	dominio,	como	si	fuera	un	servidor	remoto.
Lógicamente	ese	dominio	solo	estará	disponible	desde	tu	ordenador	y	tendrás	que	configurar	el	conocido
archivo	"hosts"	para	asociar	la	IP	del	servidor	al	nombre	de	dominio	virtual.
sites:
 - map: homestead.dw
 to: /home/projects/mi_proyecto/public
En	este	caso	en	"map"	colocamos	el	nombre	de	dominio	para	el	virtualhost	y	en	"to"	indicamos	la	carpeta
del	servidor	virtual	donde	va	a	estar	el	"document	root".	Si	te	fijas,	ese	document	root	debe	colgar	de	la
carpeta	que	tienes	en	la	máquina	virtual	que	has	enlazado	con	tu	carpeta	real,	de	ese	modo	podrás	editar	en
local	los	archivos	de	tu	proyecto	que	se	servirá	desde	el	ordenador	virtual.
Nota:	En	una	instalación	de	Homestead	serías	capaz	de	albergar	varios	proyectos	si	así	lo	deseas,	con
diversos	host	virtuales.	Insistimos	en	que	cada	uno	de	los	host	virtuales	tendrás	que	configurarlo	en	el
archivo	de	hosts	de	tu	ordenador,	asociando	la	IP	que	hayas	configurado	para	esta	máquina	virtual	con
el	nombre	de	dominio	de	tus	virtualhost.
Tu	archivo	hosts	tendrás	que	editarlo	agregando	esta	líneas,	que	quedará	más	o	menos	de	esta	forma:
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 10 de 163
192.168.10.10 homestead.dw
Aunque	lógicamente,	tendrás	que	poner	la	IP	que	hayas	definido	en	el	campo	IP	de	Homestead.yaml	y	el
nombre	de	dominio	que	hayas	definido	en	los	"sites",	en	el	campo	"map".
Nota:	La	configuración	del	archivo	Hosts	está	explicada	en	el	artículo:	Modificar	el	archivo	de	Hosts	en
Windows,	Linux	y	Mac
Lanzar	la	máquina	virtual
Una	vez	configurado	el	Homestead.yaml	tienes	que	lanzar	la	máquina	virtual,	es	decir,	tendrás	que	ponerla
en	marcha,	con	el	conocido	comando	de	Vagrant:
vagrant up
Ese	comando	lo	tienes	que	lanzar	desde	la	carpeta	donde	has	puesto	el	repositorio	de	Homestead,	que
clonaste	con	Git.	La	primera	vez	que	se	ejecute	va	a	tardar	un	poco,	porque	tiene	que	instanciar	y	configurar
toda	la	máquina,	pero	luego	iniciar	la	máquina	virtual	será	muy	rápido,	también	con	el	comando	"vagrant
up".
Nota:	En	los	comentarios	del	artículo	nos	han	preguntado	en	qué	momento	hacer	el	"vagrant	init".	Ese
comando	no	lo	necesitas	hacer	tú	mismo.	Sirve	para	que	se	cree	el	Vagrantfile	y	configurar	una	carpeta
para	que	albergue	una	máquina	virtual	que	vas	a	crear	con	Vagrant.	Pero	básicamente	el	Vagrantfile	es	lo
que	te	descargas	al	clonar	el	repositorio	y	las	configuraciones	que	necesita	Vagrant	y	que	realizas
predeterminadamente	al	hacer	al	"Vagrant	init"	son	las	que	has	aprendido	a	definir	en	el	archivo
Homestead.yaml.
Por	tanto,	si	en	algún	momento	haces	un	"vagrant	up"	y	te	pide	hacer	un	"vagrant	init"	es	que	estás
haciendo	el	"vagrant	up"	desde	una	carpeta	incorrecta.	En	ese	caso	fíjate	que	estés	situado	en	el
repositorio	de	Homestead	que	has	clonado.	En	esa	carpeta	debería	haber	un	Vagrantfile,	ya	que	es	uno
de	los	archivos	del	repositorio	clonado.
Una	vez	lanzada	la	máquina	virtual	podríamos	hacer	una	primera	prueba	accediendo	a	la	IP	del	servidor
virtual	con	tu	navegador.
http://192.168.10.10/
(Ojo,	la	URL	podría	ser	otra	si	tocaste	en	el	Homestead.yaml	el	dato	ip: "192.168.10.10".	Si	no	es	esa,	será	la	IP
que	hayas	configurado	en	tu	caso)
De	momento	no	veremos	nada,	pero	al	menos	el	navegador	no	deberías	recibir	tampoco	el	típico	error	del
navegador	para	informar	que	el	host	no	ha	sido	encontrado.	En	mi	caso	aparece	el	mensaje	"No	input	file
http://www.desarrolloweb.com/articulos/modificar-hosts-windows-linux-mac.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 11 de 163
specified.".	Esto	es	porque	no	tenemos	todavía	ningún	archivo	en	el	servidor,	como	código	del	proyecto,	así
como	tampoco	se	ha	creado	la	carpeta	"public"	que	es	"document	root",	o	aquella	carpeta	raíz	que	hayas
configurado	en	el	yaml.
Ahora	se	trataría	de	colocar	un	archivo	dentro	de	la	carpeta	que	has	definido	como	raíz	de	tu	dominio	en	el
campo	"to:"	de	la	configuración	"sites".	Recuerda	que	esa	carpeta	está	enlazada	desde	el	servidor	virtual	con
una	ruta	en	tu	directorio	de	los	proyectos,	tal	como	se	ha	configurado.
Puedes	colocar	un	index.php	con	un	"Hola	mundo"	para	probar.	Lo	colocarás	en	una	ruta	tal	como	lo	hayas
configurado	en	tu	caso,	siguiendo	los	valores	definidos	en	este	artículo	nos	quedaría	una	como	esta:
Ordenador	vitualizado:
/home/projects/mi_proyecto/public
Equivalente	en	el	host	anfitrión	(ordenador	real):
~/carpeta_de_proyectos/codigo/mi_proyecto/public
Ahora	accediendo	a	la	IP	del	servidor	podrías	encontrar	tu	index.php.	Además,	si	has	podido	configurar
correctamente	tu	virtualhost,	podrás	acceder	a	partir	del	nombre	del	dominio	creado	en	tu	máquina.
http://homestead.dw/
Con	esto	es	todo,	de	momento	tenemos	nuestra	máquina	funcionando,	lista	para	instalar	Laravel,	pero	aún
nos	queda	toda	la	instalación	del	framework	PHP	Laravel	y	algún	trabajo	más	para	comenzar	a	desarrollar.
Lo	veremos	en	próximos	artículos.
Antes	de	acabar	sería	solo	comentar	que	tenemos	un	#programadorIO	sobre	Laravel	Homestead	que
amplía	la	información	relatada	en	este	artículo.	Recuerda	también	que	puedes	encontrar	la	documentación
oficial	de	Homestead	para	Laravel	5	en	este	enlace.
Código	completo	del	Homestead.yaml
En	los	comentarios	del	artículo	nos	han	pedido	reproducir	el	código	completo	de	un	archivo
Homestead.yaml.	La	verdad	es	que	no	lo	habíamos	hecho	porque	las	configuraciones	dependen	mucho	de
las	preferencias,	costumbres,	sistemas	operativos	y	rutas	de	cada	uno,	por	lo	que	no	sería	adecuado	hacer	un
"copia-pega"	del	archivo.	Para	evitar	confusiones	y	posibles	copias	literales	lo	habíamos	dejado	pasar.	No
obstante,	para	que	sirva	de	referencia	para	comparar	vuestros	archivos	con	los	nuestros,	dejo	aquí	el	código
completo.
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
http://www.desarrolloweb.com/articulos/instalar-laravel5-composer.html
http://www.desarrolloweb.com/en-directo/laravel-homestead-programadorio-8870.html
http://laravel.com/docs/5.0/homestead
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 12 de 163
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
 - ~/.ssh/id_rsa
folders:
 - map: ~/html/Homestead/codigo
 to: /home/projects
sites:
 - map: homestead.dw
 to: /home/projects/homestead/public
 - map: testlaravel.com
 to: /home/projects/testlaravel/public
databases:
 - homestead
variables:
 - key: APP_ENV
 value: local
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 93000
# to: 9300
# - send: 7777
# to: 777
# protocol: udp
Este	artículo	es	obra	de	Carlos	Ruiz	Ruso
Fue	publicado	por	primera	vez	en	03/06/2015
Disponible	online	en	http://desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
Instalar	Laravel	5
Tutorial	para	aprender	a	instalar	el	popular	framework	PHP	Laravel	5,	usando	Composer.
En	este	artículo	del	Manual	de	Laravel	vamos	a	abordar	la	instalación	del	framework	PHP	Laravel	5	usando
la	conocida	herramienta	Composer,	el	gestor	de	dependencias	de	PHP,	que	si	no	conoces	de	antemano	te
recomendamos	estudiar	con	el	Manual	de	Composer	de	DesarrolloWeb.com.
Además	usaremos	una	máquina	virtual	para	instalar	Laravel,que	es	la	denominada	Homestead,	la
http://desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://www.desarrolloweb.com/manuales/tutorial-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 13 de 163
plataforma	oficial	de	desarrollo	de	Laravel	5,	que	ya	te	explicamos	en	el	artículo	sobre	Homestead.	No
obstante,	lo	cierto	es	que	este	proceso	de	instalación	lo	podrías	realizar	sobre	cualquier	ordenador,	usando
virtualización	o	usando	PHP	instalado	a	mano	o	con	softwares	como	Xampp	o	Mamp.	El	proceso	es
exactamente	el	mismo,	puesto	que	se	usa	Composer	también	y	éste	es	independiente	de	la	máquina	donde
lo	tengamos	instalado,	su	sistema	operativo,	etc.
Al	final	del	artículo	además	encontrarás	un	vídeo	que	te	explica	el	proceso	de	manera	visual	y	agrega	otra
serie	de	informaciones	de	utilidad	acerca	de	la	instalación	de	Laravel	5.
Requisitos
Para	instalar	Laravel	5	necesitas	estos	requisitos:
PHP	5.5.9
Las	extensiones	de	PHP:
OpenSSL
Mbstring
Tokenizer
Además	requiere	que	tengas	instalado	en	tu	sistema	el	gestor	de	dependencias	Composer,	ya	que	Laravel	lo
usa	para	la	instalación.
Como	hemos	dicho	anteriormente	también,	instalando	la	máquina	virtual	Homestead	te	aseguras	de	tener
todo	lo	necesario	para	instalar	Laravel	5	sin	necesidad	de	configurar	a	mano	ninguno	de	los	paquetes	o
extensiones	necesarias.
Iniciar	la	máquina	virtual	Homestead
Esta	instalación	la	vamos	a	realizar	usando	Homestead,	así	que	os	dejamos	un	par	de	apreciaciones	que
necesitarás	tener	en	cuenta.
Debes	arrancar	la	máquina	virtual,	para	lo	que	te	situarás	en	la	línea	de	comandos	en	la	carpeta	donde
instalaste	Homestead.	Desde	allí	lanzarás	el	comando:
vagrant	up
http://www.desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 14 de 163
Seguidamente	tendrás	que	conectarte	por	SSH	con	la	máquina	virtual	de	Homestead,	porque	la	instalación
de	Laravel	la	vamos	a	realizar	sobre	esa	máquina	y	no	sobre	tu	ordenador	"real".	Lo	consigues	con	el
comando:
vagrant	ssh
Nota:	Si	por	despiste	intentas	instalar	Laravel	5	más	adelante	sin	haber	entrado	en	la	máquina	virtual	de
Homestead	por	SSH,	lo	más	seguro	es	que	por	un	tema	de	dependencias	no	puedas	descargarte	el
instalador	de	Laravel	y	te	arrojará	un	error	parecido	al	siguiente:
[RuntimeException]	Could	not	load	package	guzzlehttp/guzzle	in	http://packagist.org:
[UnexpectedValueException]	Could	not	parse	version	constr	aint	^1.1:	Invalid	version	string	"^1.1"
[UnexpectedValueException]	Could	not	parse	version	constraint	^1.1:	Invalid	version	string	"^1.1"
Luego	tendrás	que	recordar	cómo	instalaste	Homestead	y	las	carpetas	de	proyecto	que	fueron	configuradas,
así	como	el	virtualhost	que	fue	definido	(datos	de	configuración	"folders"	y	"sites").	Eso	se	definió	en	el
archivo	Homestead.yaml	que	tienes	en	la	carpeta:	~/.homestead.
Nota:	Fíjate	que	la	carpeta	~/.homestead.	es	una	carpeta	oculta	en	Linux	o	Mac,	por	lo	que	para
localizarla	tendrás	que	listar	archivos	ocultos	con	"ls	-la".	Los	que	estáis	en	Windows	lo	tenéis	en	esa
misma	carpeta,	en	la	home	de	tu	usuario	de	Windows	(es	lo	que	significa	"~/"),	la	diferencia	es	que
.homestead	no	será	una	carpeta	oculta.
Instalación
Se	trata	de	un	par	de	sencillos	pasos	(sencillos	ya	que	son	comandos	de	Composer,	que	es	quien	hace	el
trabajo	bruto	para	ti).
1.-	Primero	descargamos	el	instalador	de	Laravel	y	lo	disponibilizamos	de	manera	global.	Este	es	un
paso	que	tendrás	que	hacer	una	vez	únicamente,	independientemente	del	número	de	instalaciones	de
Laravel	que	quieras	crear	en	una	máquina.
composer	global	require	"laravel/installer"
O	bien:
composer	global	require	"laravel/installer=~1.1"
Recuerda	que	ese	comando	lo	lanzas	en	la	máquina	virtual	Homestead!!
Nota:	Si	no	estás	trabajando	con	Homestead,	que	ya	te	lo	da	todo	hecho,	tienes	que	cerciorarte	de
disponer	el	directorio	~/.composer/vendor/bin	en	tu	variable	de	entorno	PATH,	de	modo	que	el
ejecutable	de	Laravel	se	pueda	localizar	en	cualquier	lugar	de	tu	sistema.	Será	necesario	cuando
queramos	crear	la	instalación	del	framework	a	partir	del	instalador	descargado.
http://packagist.org/
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 15 de 163
Actualizado:	En	marzo	de	2016,	al	instalar	Laravel,	una	vez	realizado	el	comando	composer	global
require	"laravel/installer"	me	da	el	problema	"laravel:	command	not	found",	a	pesar	de	estar	en	una
máquina	virtual	Homestead,	que	se	supone	que	ya	viene	configurada.	Ese	error	indica	que	el	programa
instalador	de	Laravel	que	te	crea	Composer	no	está	en	el	Path.	Sin	embargo,	las	rutas	han	cambiado,
porque	deberemos	confirmar	donde	está	realmente	Composer	dejando	el	instalador	de	Laravel.
Ahora	el	instalador	lo	hemos	localizado	en	otro	PATH.	Te	informa	de	ello	el	propio	Composer	al	lanzar
el	comando	para	bajarse	el	instalador	de	Laravel.	"Changed	current	directory	to
/home/vagrant/.config/composer",	así	que	será	esa	carpeta	la	que	tengamos	que	meter	en	el	Path.	Esto
lo	consigues	editando	un	archivo	que	se	llama	".bash_profile"	que	tienes	en	la	ruta	donde	se	abre	la
máquina	virtual	al	conectarte	con	"vagrant	ssh".	Puedes	editar	ese	archivo	con	Vim,	por	ejemplo
lanzando	el	comando:
vim	~/.bash_profile
A	continuación	debes	indicar	el	path	que	quieres	agregar	al	sistema.	Dada	la	ruta	de	los	ejecutables	de
Composer,	el	contenido	que	tienes	que	colocar	en	ese	archivo	es	el	siguiente:
export	PATH=~/.config/composer/vendor/bin:$PATH
Para	que	ese	cambio	tenga	efecto	tienes	que	reiniciar	la	conexión	con	ssh.	Primero	haces	"exit"	y	luego
conectas	de	nuevo	con	"vagrant	ssh".
2.-	Instalamos	una	instancia	del	framework	en	nuestra	carpeta	de	proyecto.	A	través	del	comando
"laravel	new	Nombre_De_Proyecto"	creamos	una	instalación	limpia	del	framework.	Imagina	que	tu
proyecto	se	llama	"test_desarrollo",	entonces	lanzarás	este	comando:
laravel	new	test_desarrollo
Eso	nos	creará	un	nuevo	directorio	en	el	sistema	en	el	que	tendremos	la	instalación	de	Laravel	lista	para
usar.	Además,	todas	las	dependencias	que	usa	Laravel	para	funcionar	se	instalarán	en	el	mismo	proceso,	con
lo	que	no	tendrás	que	preocuparte	por	instalar	por	separado	nada	más,	ni	configurar	ninguna	librería.
Ese	comando	lo	tienes	que	realizar	desde	la	carpeta	de	tus	proyectos,	dentro	de	la	máquina	virtual	de
Homestead.	Por	ejemplo,	si	definiste	esta	configuración	en	el	Homestead.yaml:
folders:	-	map:	~/proyectos/codigo	to:	/home/projects
sites:	-	map:	mi_proyecto.dw	to:	/home/projects/mi_proyecto/public
Ese	comando	lo	tendrás	que	lanzar	en	el	directorio	definido	en	"folders:	->	to:".	Dada	la	configuración
anterior	sería	en	/home/projects.	Insistimos,	dentro	de	la	máquina	virtual	con	Homestead.
Alternativa	tradicional	de	instalación	de	Laravel
Antes	de	la	versión	5	Laravel	se	instalaba	con	un	comando	diferente,	que	también	puedes	seguir	usando	si
es	tu	preferencia.
composer	create-project	laravel/laravel	--prefer-dist
Eso	se	conectará	con	Git	para	traerse	el	código	de	Laravel	5	y	lo	copiara	en	tu	carpeta,	aunque	esta	opción
será	un	poco	más	lenta.
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 16 de 163
Comprobar	la	instalación
Finalmente	querremos	comprobar	la	instalación.	Es	tan	sencillo	como	dirigirse	con	el	navegador	a	la	URL
donde	está	Laravel	instalado.	Si	obtenemos	el	mensaje	de	bienvenida,	como	el	de	esta	imagen:
Si	no	has	tenido	suerte	a	la	primera	y	la	instalación	no	está	funcionando	no	te	preocupes	puesto	que	en	tu
caso	pueden	quedar	algunas	cosas	por	hacer.	De	hecho	lo	más	seguro	es	que	sea	así	y	que	tengas	que	crear
al	menos	tu	archivo	de	entorno	(.env)	y	la	llave	de	la	aplicación.	Todo	esto	está	detallado	en	el	siguiente
artículo	en	el	que	explicamos	posibles	tareas	a	realizar	para	resolver	problemas	comunes.
Más	información	y	actualizada	en	la	página	de	la	instalación,dentro	de	la	documentación	oficial.
Os	dejamos	con	este	vídeo,	en	el	que	se	puede	ver	cómo	configurar	Homestead	y	realizar	la	instalación	de
Laravel	5.
Para	ver	este	vídeo	es	necesario	visitar	el	artículo	original	en:
http://desarrolloweb.com/articulos/instalar-laravel5-composer.html
Este	artículo	es	obra	de	Miguel	Angel	Alvarez
Fue	publicado	por	primera	vez	en	10/06/2015
Disponible	online	en	http://desarrolloweb.com/articulos/instalar-laravel5-composer.html
Videotutorial:	Instalar	Homestead	y	Laravel	5	en	Windows
Guía	paso	a	paso	en	vídeo	sobre	la	instalación	de	Laravel	5	en	Windows,	usando	una	máquina
virtual	Homestead,	tal	como	se	recomienda	para	entorno	de	desarrollo.
En	estos	vídeos	vamos	a	enseñar	cómo	instalar	Homestead	y	cómo	instalar	Laravel	en	la	máquina	virtual	de
desarrollo	(Homestead).	Estos	vídeos	son	complementarios	a	otros	que	ya	hemos	publicado	en
DesarrolloWeb.com,	con	la	diferencia	que	en	este	caso	vamos	a	usar	el	sistema	operativo	Windows	para
realizar	las	tareas.
¿Por	qué	Windows?	porque	indudablemente	la	mayoría	de	los	desarrolladores	trabajan	con	Windows	y
porque	ya	habíamos	publicado	artículos	y	vídeos	en	los	que	se	mostraba	el	proceso	en	el	sistema	operativo
Mac	OS	X.	En	OS	X	y	en	Linux	la	instalación	es	calcada,	pero	en	Windows	algunos	lectores	nos	habían
pedido	instrucciones	más	precisas.
http://www.desarrolloweb.com/articulos/tareas-instalacion-laravel5-problemas.html
http://laravel.com/docs/#installation
http://desarrolloweb.com/articulos/instalar-laravel5-composer.html
http://desarrolloweb.com/articulos/instalar-laravel5-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 17 de 163
El	procedimiento	para	instalar	Laravel	5,	según	la	recomendación	oficial	para	entornos	de	desarrollo,	está
compuesto	de	dos	pasos.
Instalar	Homestead	(una	máquina	virtual	de	desarrollo	que	tiene	todos	los	requisitos	para	que
Laravel	funcione	perfectamente)
Instalar	Laravel	5,	para	poder	comenzar	el	desarrollo	con	este	framework	PHP.
Estos	dos	pasos	ya	los	hemos	relatado	en	texto,	con	instrucciones	detalladas,	en	artículos	anteriores	del
Manual	de	Laravel	5.	Por	ese	motivo	no	vamos	a	repetir	las	explicaciones	y	vamos	directamente	a	mostrar
los	vídeos.
Instalar	Homestead	en	Windows
En	este	vídeo	realizamos	el	primero	de	los	pasos,	la	instalación	de	Homestead,	la	plataforma	de	desarrollo
basada	en	una	virtualización	de	Linux	con	la	"distro"	Ubuntu.	Osea,	estamos	diciendo	que	instalaremos
Laravel	sobre	Windows,	pero	verdaderamente	lo	que	vamos	a	crear	es	una	máquina	virtual	en	nuestro
ordenador	que	tendrá	el	sistema	operativo	Linux.	Homestead	es	el	nombre	que	recibe	el	proyecto	de	esa
máquina	virtual	configurada	para	instalar	Laravel	5	para	un	entorno	de	desarrollo.
Los	motivos	de	la	instalación	de	Laravel	sobre	una	máquina	virtual	Linux	y	de	la	existencia	de	Homestead
en	general	está	relatados	en	el	artículo	Instalar	Homestead.
Para	ver	este	vídeo	es	necesario	visitar	el	artículo	original	en:
http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
Instalar	Laravel	5	sobre	Windows
Ahora	vamos	a	instalar	Laravel	5	en	Homestead	sobre	una	máquina	anfitrión	Windows.	El	trabajo	lo
hacemos	sobre	Homestead,	por	lo	que	este	procedimiento	verdaderamente	sería	exactamente	igual	en
Windows,	Linux	o	Mac,	porque	realmente	estamos	haciendo	todo	el	proceso	en	la	máquina	virtual.	Difieren
pocas	cosas,	como	la	consola	de	comandos	(terminal)	que	puedas	usar.
El	procedimiento	ya	se	explicó	en	el	artículo	Instalar	Laravel	5,	aunque	ahora	vamos	a	mostrar	cómo	se
realiza	todo	esto	de	manera	particular	para	los	usuarios	de	Windows.
En	una	máquina	Homestead	puedes	tener	varios	sitios	web	funcionando	con	Laravel,	por	lo	que	lo	que
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://www.desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
http://www.desarrolloweb.com/articulos/instalar-laravel5-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 18 de 163
vamos	a	realizar	nosotros	ahora	es	la	instalación	de	Laravel	5	para	un	proyecto	en	particular.	Luego
podríamos	repetir	un	proceso	de	manera	similar	para	administrar	varios	proyectos	como	se	explica	en	el
artículo	Mantener	varios	proyectos	con	Homestead.
En	el	vídeo	que	puedes	ver	a	continuación	realizamos	además	un	pequeño	"Hola	mundo"	para	saber	si	la
instalación	de	Laravel	fue	realizada	con	éxito.
Para	ver	este	vídeo	es	necesario	visitar	el	artículo	original	en:
http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
Esperamos	que	estas	indicaciones	te	hayan	servido	de	utilidad	y	complementen	la	información	presentada
anteriormente	sobre	Laravel	5.	Si	tienes	algún	problema	con	la	instalación,	y	para	continuar	con	los
siguientes	pasos,	te	recomendamos	también	echar	un	vistazo	al	artículo	sobre	Tareas	y	problemas	comunes
al	instalar	Laravel	5.
Acerca	de	problemas	comunes	de	instalar	Laravel,	para	la	realización	de	estos	vídeos	me	vi	con	una
dificultad	y	es	que,	una	vez	instalado	Homestead,	no	se	iniciaba	la	máquina	virtual	y	por	tanto	no	se	podía
arrancar	el	servidor	con	"vagrant	up".	Solo	tuve	que	actualizar	la	versión	de	VirtualBox	instalada	en	mi
ordenador,	que	estaba	un	poco	viejita.
Este	artículo	es	obra	de	Miguel	Angel	Alvarez
Fue	publicado	por	primera	vez	en	09/09/2015
Disponible	online	en	http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
Tareas	adicionales	en	la	instalación	de	Laravel	5	y	problemas	comunes
Para	completar	la	instalación	tienes	que	realizar	unas	tareas	adicionales,	en	muchos	casos,	así
como	resolver	problemas	comunes.
En	el	artículo	anterior	del	Manual	de	Laravel	ya	explicamos	cómo	realizar	la	instalación	de	básica	del
framework	PHP	Laravel	5.	Como	has	podido	comprobar,	instalar	Laravel	es	muy	fácil,	pero	en	la	mayoría
de	los	casos	habrá	que	completar	algunas	tareas	básicas	para	dejarlo	funcionando	correctamente	en	nuestro
sistema.	En	este	artículo	pretendemos	ayudar	explicando	cuáles	son	esas	posibles	tareas,	a	la	par	que
analizamos	los	problemas	que	te	puedes	encontrar	durante	la	instalación.
Obviamente	sería	imposible	recabar	todos	los	tipos	de	problemas	con	los	que	te	puedes	encontrar	cuando
estés	instalando	Laravel	5,	porque	dependen	de	la	configuración	concreta	del	sistema	donde	lo	vayamos	a
instalar.	No	obstante,	vamos	a	hacer	un	listado	de	cosas	que	pueden	fallar	en	este	momento,	en	base	a
nuestra	experiencia.
El	temido	enemigo	en	este	caso	es	el	mensaje	"Whoops,	looks	like	something	went	wrong.",	que	en	la
mayoría	de	los	casos,	en	modo	desarrollo,	te	debería	advertir	qué	es	lo	que	está	funcionando	mal.	A	partir
de	ese	mensaje	deberías	encontrar	la	pista	para	saber	como	solucionar	tu	problema	particular.
http://www.desarrolloweb.com/articulos/mantener-proyectos-homestead.html
http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
http://www.desarrolloweb.com/articulos/tareas-instalacion-laravel5-problemas.html
http://desarrolloweb.com/articulos/videotutorial-instalar-homestead-laravel-windows.html
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://www.desarrolloweb.com/articulos/instalar-laravel5-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 19 de 163
Nota:	Además,	recuerda	que	se	recomienda	instalar	Laravel,	al	menos	durante	la	etapa	de	desarrollo,
sobre	Homestead	y	ya	con	eso	eliminaremos	la	mayoría	de	las	fuentes	comunes	de	problemas,	ya	que
partes	de	una	máquina	virtual	que	tiene	todo	lo	necesario	para	que	Laravel	funcione	sin	problemas.
Ahora	van	algunas	de	las	posibles	causas	y	soluciones	de	problemas	que	hemos	detectado.
Archivo	de	entorno	inexistente
Hemos	observado	que	si	instalas	Laravel	5	a	partir	del	instalador	(laravel	new	nombre_proyecto)	no	se	crea
el	archivo	de	entorno.Ese	es	un	archivo	que	está	en	la	raíz	del	proyecto,	que	se	llama	".env".
Fíjate	que	en	la	carpeta	raíz	debería	haber	un	archivo	llamado	.env.example.	Ese	archivo	es	un	ejemplo	de
configuración.	La	solución	sería	simplemente	duplicar	el	archivo	y	llamarle	".env".
Atención	aquí	a	la	variable	de	entorno	APP_DEBUG,	que	debería	estar	a	"true"	para	que	te	de	una
descripción	completa	de	los	errores	que	se	puedan	producir	al	ejecutar	Laravel.	Si	no	está	el	archivo	de	la
configuración	del	entorno,	o	dentro	de	él	APP_DEBUG	está	a	false,	verás	que	el	mensaje	de	error	de
Laravel	no	aparece	con	descripción	detallada.
Como	alternativa,	via	Composer	también	se	puede	acceder	a	la	creación	de	este	archivo	de	configuración
del	entorno.	Si	te	fijas	en	el	composer.json	hay	una	sección	de	scripts	que	sirven	para	correr	comandos	post-
instalación.	Entre	ellos	hay	uno	que	hace	justamente	la	copia	del	.env.example	al	.env.	El	script	se	llama
"post-root-package-install".	Para	ejecutarlo	con	Composer	lanzamos	el	comando	siguiente:
composer	run-script	post-root-package-install
Nota:	Todas	las	variables	de	entorno	se	pueden	acceder	via	$_ENV	que	es	una	variable	PHP
superglobal,	que	mediante	un	array	asociativo	te	permite	acceder	sus	elementos.	Hay	un	helper	llamado
"env"	que	justamente	está	para	facilitarte	el	acceso	a	las	variables	de	entorno	sin	usar	la	superglobal	de
PHP.	Por	ejemplo	env('APP_DEBUG')	te	daría	el	valor	de	la	variable	de	entorno	APP_DEBUG.
Puedes	verlo	en	funcionamiento	en	el	archivo	config/app.php.
Permisos	de	las	carpetas
http://www.desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 20 de 163
Otra	situación	que	puede	dar	lugar	a	errores	es	que	no	tengas	permisos	de	escritura	en	las	carpetas	que	lo
necesitan.	Directorios	dentro	de	"storage"	y	"bootstrap/cache"	deben	tener	permisos	de	escritura	para	el
servidor	web.	Si	has	instalado	Laravel	en	una	máquina	Homestead	no	deberías	preocuparte	por	este	detalle,
pero	si	lo	estás	haciendo	en	una	máquina	distinta	quizás	tengas	que	activarlos.
Como	estamos	en	el	ordenador	de	desarrollo	podríamos	simplemente	asignar	777	a	los	permisos	y	así	nos
aseguramos	que	no	nos	de	problemas	este	detalle.
chmod	-R	777	storage
Este	asunto	está	documentado	en	la	documentación	oficial,	aunque	no	sugieren	poner	los	permisos	a	un
valor	concreto.	Nosotros	sugerimos	solo	777	porque	es	tu	máquina	local,	nunca	se	debería	hacer	eso	en
el	servidor	remoto	donde	va	a	estar	la	aplicación	en	producción.
Llave	de	aplicación	(Application	Key)
En	el	caso	de	la	instalación	via	el	instalador	de	Laravel	5	también	hemos	observado	que	falta	la	llave	de
aplicación.	En	la	documentación	oficial	menciona	que	esa	llave	debería	haberse	generado,	tanto	instalando
con	el	instalador	de	Laravel	(laravel	new)	como	via	Composer	con	la	alternativa	tradicional.	Via	composer	sí
se	generó	la	llave,	pero	no	via	el	instalador.
La	solución	es	sencilla	porque	mediante	el	comando	de	Artisan	key:generate	se	realiza	todo	el	trabajo	para
ti.
Nota:	Ojo,	porque	la	llave	se	genera	en	el	archivo	de	entorno	.env	y	si	ese	archivo	no	existe	quizás	no
funcione	el	comando	de	Artisan	key:generate.	Lee	el	punto	anterior	"Archivo	de	entorno	inexistente"
para	encontrar	más	información.
Dentro	de	la	raíz	de	tu	proyecto,	donde	se	encuentra	el	.env	lanza	el	comando:
php	artisan	key:generate
Eso	te	debería	lanzar	algo	como	la	siguiente	salida:
Application	key	[dpGvjrnnKLGszdgcck1YSLrSMGeN61dy]	set	successfully.
Además	el	propio	comando	te	actualiza	el	archivo	.env,	pero	si	no	es	así	podrías	hacerlo	a	mano	tú	mismo,
en	el	epígrafe	APP_KEY:
APP_KEY=dpGvjrnnKLGszdgcck1YSLrSMGeN61dy
Como	nos	avisan	en	la	documentación,	ten	cuidado	con	este	detalle	porque	si	la	llave	de	aplicación	no	ha
sido	generada	los	datos	de	las	sesiones	de	usuario	y	otras	informaciones	encriptadas	no	estarán	seguras.
Revisar	config/app.php
En	este	archivo	encontrarás	información	de	configuración	de	la	aplicación.	Generalmente	no	necesitas
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 21 de 163
tocarlo	si	estás	impaciente	y	quieres	ver	ya	el	framework	funcionando.	Sin	embargo	encontrarás	algunas
cosas	útiles	como	la	variable	"timezone"	y	"locale"	que	en	una	aplicación	en	producción	desearás	editar.
Otros	elementos	que	se	pueden	configurar	en	otros	archivos	son	Chache,	Database,	Session,	que	veremos
más	adelante.
URLs	amigables	a	usuarios	/	buscadores
Laravel	es	capaz	de	mostrar	las	URL	de	aplicación	de	una	manera	amistosa	para	el	usuario,	y	para	los
buscadores	que	puedan	recorrer	la	página.	Todo	en	Laravel	comienza	con	un	index.php	que	está	dentro	de
la	carpeta	"public"	(que	debería	ser	tu	document	root).	Para	eliminar	ese	index.php	de	las	URL	y	que	éstas
queden	más	limpias	es	posible	que	necesites	tocar	alguna	cosa.	Aunque	si	estás	instalando	via	Homestead	no
deberías	encontrarte	con	ningún	problema	en	este	sentido.
Laravel	5	viene	con	un	archivo	.htaccess	que	sirve	para	generar	las	URL	amigables	en	Apache.	Solo	ten	en
cuenta	que	tu	apache	debe	tener	activado	el	mod_rewrite	para	que	las	redirecciones	de	.htaccess	funcionen
correctamente.
Además	del	.htaccess	que	encuentras	en	la	carpeta	"public"	en	la	documentación	de	Laravel,	en	la	sección
de	instalación	http://laravel.com/docs/#installation	y	luego	en	la	subsección	"Pretty	URL"	te	ofrecen	una
versión	reducida	del	.htaccess	que	podrías	probar	si	la	que	provee	el	framework	no	hace	correctamente	su
trabajo.
Para	los	que	están	en	Nginx	se	debe	agregar	una	directiva	en	la	configuración	del	sitio:
location	/	{	try_files	$uri	$uri/	/index.php?$query_string;	}
Esto	es	todo	por	el	momento.	Si	queréis	profundizar	en	el	tema	os	recomendamos	que	os	veáis	los	vídeos
que	encontraréis	en	el	siguiente	enlace:	Primeros	pasos	con	Laravel	5
Este	artículo	es	obra	de	Miguel	Angel	Alvarez
Fue	publicado	por	primera	vez	en	17/06/2015
Disponible	online	en	http://desarrolloweb.com/articulos/tareas-instalacion-laravel5-problemas.html
Mantener	varios	proyectos	con	Homestead
Tutorial	para	albergar	varios	proyectos	realizados	con	Laravel	en	una	misma	máquina	virtual
Homestead,	con	varias	instalaciones	del	framework	PHP.
Estás	trabajando	con	Laravel	y	te	has	decantado,	tal	como	se	recomienda,	trabajar	en	el	entorno
Homestead.	Tienes	una	máquina	virtual	con	una	instalación	de	Laravel,	pero	quieres	manejar	diferentes
proyectos,	de	manera	independiente,	reutilizando	la	misma	máquina	virtual,	para	no	tener	que	gastar	mayor
espacio	en	disco	o	tiempo	en	crear	una	máquina	nueva.
Esta	es	una	situación	muy	común	y	que	tiene	una	sencilla	solución,	simplemente	a	través	de	la	configuración
del	archivo	Homestead.yaml,	creando	distintos	host	para	cada	proyecto,	asociados	a	otras	carpetas	del
http://laravel.com/docs/#installation
http://www.desarrolloweb.com/en-directo/primeros-pasos-framework-laravel5-8872.html
http://desarrolloweb.com/articulos/tareas-instalacion-laravel5-problemas.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 22 de 163
servidor.
Obviamente,	para	llegar	a	este	artículo	tienes	que	saber	Qué	es	Homestead	y	saber	cómo	instalar	Laravel.
Lo	que	vamos	a	aprender	de	nuevo	es	algo	muy	sencillo,	simplemente	configurar	varios	host	virtuales	para
cada	proyecto.
Configuración	de	"sites"	en	Homestead.yaml
Recuerda	que	el	archivo	Homestead.yaml"	está	en	la	carpeta	".homestead"	que	está	situada	en	la	raíz	de	tu
usuario.	Tanto	en	Windows,	Linux	o	Mac:	"~/.homestead".
Nota:	Solo	un	detalle	para	los	de	Windows,	la	carpeta	"~/.homestead"	físicamente	estará	en	una	ruta
del	disco	donde	tengas	instalado	Windows.	Si	tu	usuario	se	llama	"carlos"	y	has	instalado	Windows	en	el
disco	C,	tu	carpeta	estaría	físicamente	en	una	ruta	absoluta	como	esta	C:\Users\carlos.homestead.
Recuerda	que	si	usas	un	terminal	medianamente	bueno	como	el	que	te	viene	con	Git	(git	bash)	sí	que	te
reconocerá	las	rutas	comenzando	con	~/	como	rutas	a	la	carpeta	de	tu	usuarioWindows.
Dentro	del	Homestead.yaml	está	el	epígrafe	"sites",	sobre	el	que	podemos	construir	cualquier	número	de
hosts	virtuales	(virtualhost	en	la	terminología	de	servidores,	que	significa	que	el	servidor	web	reconocerá	esa
carpeta	como	un	sitio	aparte,	al	que	se	accederá	por	un	nombre	de	dominio	independiente).
Si	queremos	crear	varios	host	independientes,	uno	para	cada	proyecto	Laravel,	simplemente	tenemos	que
listar	ese	número	de	virtualhost	tal	como	sigue:
sites:
 - map: proyecto1.local.com
 to: /home/projects/proyecto1/public
 - map: proyecto2.local.com
 to: /home/projects/proyecto2/public
 - map: proyecto3.local.com
 to: /home/projects/proyecto3/public
Podemos	tener	tantos	virtualhost	como	queramos.	Luego	se	trata	de	crear	las	carpetas	mapeadas	a	cada	uno
de	esos	host	virtuales	en	la	máquina	Homestead,	algo	que	seguramente	harás	solamente	cuando	llegue	el
paso	de	la	instalación	del	framework	Laravel	5	tal	como	se	explicó	anteriormente.
http://www.desarrolloweb.com/articulos/instalar-homestead-para-laravel5.html
http://www.desarrolloweb.com/articulos/instalar-laravel5-composer.html
http://www.desarrolloweb.com/articulos/instalar-laravel5-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 23 de 163
Aprovisionar	los	cambios	en	el	archivo	Homestead.yaml
Si	simplemente	cambias	el	archivo	Homestead.yaml	las	nuevas	configuraciones	no	funcionarán,	ni	tan
siquiera	si	reinicias	la	máquina	virtual.	Por	ello	tendrás	que	hacer	un	paso	adicional	para	aprovisionar	de
nuevo	la	máquina	atendiendo	a	los	nuevos	valores	de	configuración.
Eso	se	consigue	con	un	comando	como	el	que	sigue:
vagrant reload --provision
Ese	comando	para	la	máquina	virtual	y	luego	la	reconfigura,	tomando	los	nuevos	datos	indicados	en	el
archivo	de	configuración.	Luego	la	vuelve	a	encender	ya	con	las	nuevas	configuraciones.
Nota:	Solo	para	mencionarlo	por	si	a	alguien	se	le	ocurre,	no	hace	falta	hacer	el	vagrant	destroy	para
eliminar	la	máquina	virtual	de	Homestead	y	luego	volverla	a	crear.	Eso	podría	funcionar,	pero	se	te
eliminarán	los	proyectos	que	has	creado.
Volver	a	configurar	el	archivo	hosts
También	podrá	resultar	obvio,	pero	hay	que	comentar	que,	inmediatamente	después	de	crear	los	nuevos
virtualhost	y	antes	de	poder	acceder	a	ellos	por	los	nombres	de	dominio	configurados,	deberás	editar	tu
archivo	hosts	para	agregar	la	IP	del	servidor	asociada	al	nuevo	nombre	de	dominio	que	se	está	definiendo.
Colocarás	una	línea	como	esta:
192.168.10.10 proyecto2.local.com
También	ojo	con	esa	línea	porque	tu	máquina	Homestead	podría	tener	otra	IP	distinta	si	lo	editaste	en	el
archivo	Homestead.yaml	y	lógicamente	el	nombre	del	dominio	para	el	virtualhost	también	será	otra,	que
hayas	configurado	en	tu	archivo	yaml.
Conclusión
Con	eso	es	todo!	en	lugar	de	crear	máquinas	nuevas	para	colocar	proyectos	distintos	de	Laravel,	lo	que
generalmente	harás	es	crear	nuevos	host	virtuales	sobre	la	misma	máquina,	así	compartes	el	mismo	entorno
de	desarrollo	para	diferentes	proyectos	Laravel	5.
Es	una	situación	bastante	común,	pero	no	implica	necesariamente	que	lo	tengas	que	hacer	así.	Para	un
proyecto,	por	cualquier	motivo,	podrías	preferir	crear	una	máquina	virtual	totalmente	independiente,
creando	una	nueva	instancia	de	Homestead,	en	lugar	de	reutilizar	la	que	ya	tenías.
Este	artículo	es	obra	de	Carlos	Ruiz	Ruso
Fue	publicado	por	primera	vez	en	25/06/2015
Disponible	online	en	http://desarrolloweb.com/articulos/mantener-proyectos-homestead.html
http://desarrolloweb.com/articulos/mantener-proyectos-homestead.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 24 de 163
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 25 de 163
Primeros	pasos	con	Laravel
En	los	siguientes	artículos	ponemos	las	manos	en	el	código	para	introducirnos	en	Laravel.	Encontrarás	una
vista	de	pájaro	de	lo	que	te	ofrece	el	framework	PHP.	Además	te	explicamos	con	detalle	cómo	funciona	el
sistema	de	rutas	de	Laravel	y	te	ayudamos	a	realizar	tus	primeras	páginas	basadas	en	este	sistema.
Primera	prueba	de	Laravel	con	el	sistema	de	rutas
Este	sería	un	típico	Hola	Mundo	realizado	en	Laravel,	en	el	que	podremos	construir	una	primera
ruta	dentro	de	nuestra	aplicación.
Imaginamos	que	estás	ansioso	por	pasar	de	la	pantalla	inicial	de	Laravel	y	ver	ya	algún	tipo	de	salida	que	se
haya	producido	mediante	un	código	tuyo	propio.	En	ese	caso	en	este	artículo	podremos	ayudarte,	porque
vamos	a	probar	el	sistema	de	enrutamiento	de	solicitudes	Laravel	y	hacer	una	primera	página	que	muestre
una	salida.
Obviamente,	las	cosas	que	vamos	a	hacer	en	este	ejemplo	no	son	del	todo	correctas,	pero	Laravel	nos	las
permite.	Nos	referimos	a	crear	salida	sin	usar,	o	dejando	de	lado,	lo	que	sería	el	patrón	de	diseño	MVC.
Vamos	a	intentar	ser	breves,	así	que	nos	vamos	a	dar	algunas	licencias	en	ese	sentido.
Identificar	el	archivo	donde	se	generan	las	rutas	de	la	aplicación
Comenzamos	viendo	dónde	se	generan	las	rutas	que	nuestra	aplicación	va	a	responder,	a	través	del
framework	Laravel.	Estamos	trabajando	con	la	versión	5.1,	aunque	en	todo	Laravel	5	debe	de	ser	igual.
Navega	con	tu	explorador	de	archivos	a	la	carpeta	app/Http	y	encontrarás	allí	un	fichero	llamado
routes.php.	Ese	es	el	archivo	que	contiene	todas	las	rutas	de	la	aplicación.
Una	vez	abierto	observarás	que	tiene	una	llamada	a	un	método	Route::get().	Ese	es	el	método	que	usaremos
para	generar	las	rutas.
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 26 de 163
Nota:	El	orden	en	el	que	pongamos	las	rutas	es	importante,	puesto	que	primero	se	gestionarán	las	que
aparezcan	antes	en	el	código.
Crear	nuestra	primera	ruta
Guiándonos	por	el	ejemplo	de	ruta	que	encontramos	podemos	crear	nuestra	propia	ruta.
Route::get('/test', function(){
 echo "Esto es una simple prueba!!";
});
Aunque	tendremos	que	volver	en	breve	sobre	las	explicaciones	del	sistema	de	rutas,	es	importante	señalar
algunos	puntos.
1.	 Hay	que	fijarse	que	cualquier	ruta	corresponde	con	un	verbo	del	HTTP	(get,	post,	etc.),	que	es	el
nombre	del	método	que	estamos	invocando	sobre	la	clase	Route.	En	nuestro	caso	usamos	el
método	get,	que	es	el	más	común	de	las	acciones	del	protocolo	HTTP.
2.	 Además	observa	que	ese	método	recibe	dos	parámetros,	el	primero	de	ellos	es	el	patrón	que	debe
cumplirse	para	que	esa	ruta	se	active.	En	nuestra	ruta	hemos	colocado	"/test"	que	quiere	decir	que
desde	la	home	de	la	aplicación	y	mediante	el	nombre	"test"	se	activará	esa	ruta.	En	este	caso	el
patrón	es	una	simple	cadena,	pero	en	general	podrá	ser	mucho	más	complejo,	generando	partes	de
la	ruta	que	sean	parámetros	variables.	Todo	eso	lo	estudiaremos	más	adelante.
3.	 Como	segundo	parámetro	al	método	get()	para	definir	la	ruta	indicamos	una	función	con	el	código
a	ejecutar	cuando	Laravel	tenga	que	procesarla.	Observarás	que	es	una	"función	anónima"	cuyo
código	es	un	simple	echo	para	generar	una	salida.
Nota:	Para	quien	no	lo	sepa,	una	función	anónima	es	simplemente	una	función	que	no	tiene	nombre.
Están	disponibles	en	PHP	a	partir	de	la	versión	5.3.	Estas	funciones	se	usan	típicamente	como
parámetros	en	funciones	o	como	valores	de	retorno	y	quizás	quien	venga	de	Javascript	las	conocerá	más
que	de	sobra,	porque	en	ese	lenguaje	se	usan	intensivamente.	Otro	nombre	con	el	que	te	puedes	referir	a
funciones	anónimas	es	"closure".
Acceder	a	nuestra	ruta
Viene	la	parte	más	fácil,	que	es	acceder	con	el	navegador	a	la	nueva	ruta	que	acabamos	de	definir.	Si	tu
proyecto	estaba	en	un	virtualhost,	usarás	el	nombre	de	tu	dominio	asociado	a	ese	virtualhost,	seguido	con	el
patrón	de	la	ruta	que	acabamos	de	crear	("/test"),	quedando	algo	como	esto:
http://example.com/test
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 27 de 163
Accediendo	a	esa	dirección	deberías	ver	el	mensaje	configurado	en	la	closure	enviada	al	generar	la	ruta.
Observar	las	rutas	posiblesdentro	de	una	aplicación
Antes	de	acabar	queremos	comentar	un	comando	de	Artisan	que	sirve	para	mostrar	todas	las	rutas
disponibles	en	un	proyecto	o	aplicación	web	creada	con	Laravel.	Es	un	comando	muy	útil	para	saber	qué
tipos	de	rutas	puedes	tener	y	qué	valores	te	van	a	permitir,	parámetros,	etc.
php artisan route:list
Ese	comando	te	producirá	una	salida	como	la	que	puedes	ver	en	la	siguiente	imagen.
Conclusión
De	momento	se	trata	de	una	simple	ruta,	pero	al	menos	ya	hemos	podido	tocar	algo	dentro	del	framework	y
cerciorarnos	que	todo	está	funcionando.	En	adelante	podremos	complicar	los	ejemplos	todo	lo	que
queramos	y	producir	cualquier	tipo	de	ruta,	puesto	que	el	sistema	de	routing	de	Laravel	es	muy	potente.
Además,	como	ya	hemos	dejado	entrever,	está	preparado	para	el	trabajo	con	APIs	REST	ya	que	te	admite
directamente	los	distintos	verbos	del	HTTP	que	se	suelen	usar	dentro	de	estos	sistemas.	Que	no	te	lie	esto
último,	en	realidad	no	es	necesario	construir	ningún	tipo	de	API	REST	para	trabajar	con	Laravel	5,	pero	si
lo	necesitas	lo	tendrás	bien	fácil.
En	el	siguiente	vídeo	puedes	ver	cómo	se	ha	creado	una	primera	ruta	como	la	de	este	artículo,	simplemente
de	prueba,	que	nos	sirve	para	saber	que	Laravel	está	funcionando	correctamente.
Para	ver	este	vídeo	es	necesario	visitar	el	artículo	original	en:
http://desarrolloweb.com/articulos/primera-prueba-laravel-sistema-rutas.html
Este	artículo	es	obra	de	Miguel	Angel	Alvarez
Fue	publicado	por	primera	vez	en	03/07/2015
Disponible	online	en	http://desarrolloweb.com/articulos/primera-prueba-laravel-sistema-rutas.html
Estructura	de	carpetas	de	Laravel	5
Un	resumen	de	la	estructura	de	carpetas	del	framework	Laravel	5,	a	vista	de	pájaro,	sin	entrar	en
demasiado	detalle,	pero	que	nos	ayude	a	ubicar	los	componentes	principales.
http://desarrolloweb.com/articulos/primera-prueba-laravel-sistema-rutas.html
http://desarrolloweb.com/articulos/primera-prueba-laravel-sistema-rutas.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 28 de 163
Laravel,	así	como	cualquier	framework	PHP,	propone	una	estructura	de	carpetas,	con	la	que	organizar	el
código	de	los	sitios	o	aplicaciones	web.	Como	ya	somos	desarrolladores	aplicados	;)	deberíamos	saber	que
cuando	más	separemos	el	código	por	responsabilidades,	más	facilidad	de	mantenimiento	tendrán	nuestras
aplicaciones.	Por	lo	tanto,	en	el	desarrollo	del	framework	se	cuidan	mucho	estos	detalles,	para	que	aquellos
desarrolladores	que	lo	utilicen	sean	capaces	también	de	organizarse	de	una	manera	correcta.
En	este	artículo	del	Manual	de	Laravel	pretendemos	dar	un	rápido	recorrido	a	las	carpetas	que	vas	a
encontrar	en	la	instalación	de	partida	de	Laravel	5,	teniendo	en	cuenta	que	en	futuras	ocasiones	quedará
pendiente	un	análisis	en	profundidad	de	cada	uno	de	estos	elementos.
El	objetivo	de	este	artículo	es	que	sepamos	más	o	menos	dónde	están	las	cosas	en	el	framework	y	que
tengamos	una	ligerísima	idea	de	lo	que	es	cada	cosa.
Archivos	en	la	carpeta	raíz
Los	archivos	que	tenemos	sueltos	en	la	carpeta	raíz	de	Laravel	son	los	siguientes	(o	al	menos	los	más
importantes	que	debes	ir	conociendo).
.env	Es	la	definición	de	las	variables	de	entorno.	Podemos	tener	varios	entornos	donde	vamos	a	mantener
la	ejecución	de	la	aplicación	con	varias	variables	que	tengan	valores	diferentes.	Temas	como	si	estamos
trabajando	con	el	debug	activado,	datos	de	conexión	con	la	base	de	datos,	servidores	de	envío	de	correo,
caché,	etc.
Nota:	Si	.env	no	se	ha	generado	en	tu	sistema	lo	puedes	generar	a	mano	mediante	el	archivo
.env.example,	renombrando	ese	fichero	o	duplicándo	y	renombrando	después.	Esto	se	explicó
anteriormente	en	el	artículo	llamado	Tareas	para	completar	la	instalación	y	problemas	comunes.
composer.json	Que	contiene	información	para	Composer.	Para	conocer	algo	más	de	este	fichero	es	mejor
que	te	leas	el	Tutorial	de	Composer.
Además	en	la	raíz	hay	una	serie	de	archivos	que	tienen	que	ver	con	Git,	el	readme,	o	del	lado	frontend	el
package.json	o	incluso	un	gulpfile.js	que	no	vendria	muy	al	caso	comentar	aquí	porque	no	son	cosas
específicas	de	Laravel.
Carpeta	vendor
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://www.desarrolloweb.com/articulos/tareas-instalacion-laravel5-problemas.html
http://www.desarrolloweb.com/manuales/tutorial-composer.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 29 de 163
Esta	carpeta	contiene	una	cantidad	de	librerías	externas,	creadas	por	diversos	desarrolladores	que	son
dependencias	de	Laravel.	La	carpeta	vendor	no	la	debemos	tocar	para	nada,	porque	la	gestiona	Composer,
que	es	nuestro	gestor	de	dependencias.
Si	nosotros	tuviésemos	que	usar	una	librería	que	no	estuviera	en	la	carpeta	vendor	la	tendríamos	que
especificar	en	el	archivo	composer.json	en	el	campo	require.	Luego	hacer	un	"composer	update"	para	que	la
nueva	dependencia	se	instale.
Carpeta	storage
Es	el	sistema	de	almacenamiento	automático	del	framework,	donde	se	guardan	cosas	como	la	caché,	las
sesiones	o	las	vistas,	logs,	etc.	Esta	carpeta	tampoco	la	vamos	a	tocar	directamente,	salvo	que	tengamos	que
vaciarla	para	que	todos	esos	archivos	se	tengan	que	generar	de	nuevo.
También	podemos	configurar	Laravel	para	que	use	otros	sistemas	de	almacenamiento	para	elementos	como
la	caché	o	las	sesiones.
En	cuanto	a	las	vistas	cabe	aclarar	que	no	son	las	vistas	que	vamos	a	programar	nosotros,	sino	las	vistas	una
vez	compiladas,	algo	que	genera	Laravel	automáticamente	en	función	de	nuestras	vistas	que	meteremos	en
otro	lugar.
Carpeta	resources
En	Laravel	5	han	creado	esta	carpeta,	englobando	distintos	tipos	de	recursos,	que	antes	estaban	dentro	de	la
carpeta	app.	En	resumen,	en	esta	carpeta	se	guardan	assets,	archivos	de	idioma	(lang)	y	vistas.
Dentro	de	views	tienes	las	vistas	que	crearás	tú	para	el	desarrollo	de	tu	aplicación.	En	la	instalación	básica
encontrarás	una	serie	de	subcarpetas	con	diversos	tipos	de	vistas	que	durante	el	desarrollo	podrias	crear,
vistas	de	emails,	errores,	de	autenticación.	Nosotros	podremos	crear	nuevas	subcarpetas	para	organizar
nuestras	vistas.
A	propósito,	en	Laravel	se	usa	el	motor	de	plantillas	Blade.	Lo	estudiaremos	más	adelante.
Carpeta	Public
Es	el	denominado	"document	root"	del	servidor	web.	Es	el	único	subdirectorio	que	estará	accesible	desde
fuera	mediante	el	servidor	web.	Dentro	encontrarás	ya	varios	archivos:
.htaccess	En	el	caso	de	Apache,	este	es	el	archivo	que	genera	las	URL	amigables	a	buscadores.
favicon.ico	Es	el	icono	de	nuestra	aplicación,	que	usará	el	navegador	para	el	título	de	la	página	o	al	agregar
la	página	a	favoritos.
index.php	Este	es	un	archivo	muy	importante,	que	hace	de	embudo	por	el	cual	pasan	todas	las	solicitudes	a
archivos	dentro	del	dominio	donde	se	está	usando	Laravel.	Estaría	bien	que	abrieras	ese	index.php	para
observar	lo	que	tiene	dentro.	Para	el	que	conozca	el	patrón	"controlador	frontal"	o	"front	controller"	cabe
decir	que	este	index.php	forma	parte	de	él.
robots.txt	Que	es	algo	que	indica	las	cosas	que	puede	y	no	puede	hacer	a	la	araña	de	Google	y	la	de	otros
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 30 de 163
motores	de	búsqueda.
En	la	carpeta	public	podrás	crear	todas	las	subcarpetas	que	necesites	en	tu	sitio	web	para	contener	archivos
con	código	Javascript,	CSS,	imágenes,	etc.
Carpeta	database
Contiene	las	alimentaciones	y	migraciones	de	la	base	de	datos	que	veremos	más	adelante.
Carpeta	bootstrap
Permite	el	sistema	de	arranque	de	Laravel,	es	otra	carpeta	que	en	principio	no	necesitamos	tocar.
Carpeta	config
Esta	carpeta	contiene	toda	una	serie	de	archivos	de	configuración.	La	configuración	de	los	componentes	del
framework	se	hace	por	separado,	por	lo	que	encontraremos	muchos	archivos	PHP	con	configuraciones
específicas	de	varios	elementos	que	seguramente	reconoceremos	fácilmente.
La	configuración	principal	está	en	app.php	y	luego	hay	archivos	aparte	para	configurar	la	base	de	datos,	las
sesiones,vistas,	caché,	mail,	etc.
Carpeta	app
Es	la	última	que	nos	queda	y	es	la	más	importante.	Tiene	a	su	vez	muchas	carpetas	adicionales	para	diversas
cosas.	Encuentras	carpetas	para	comandos,	para	comandos	de	consola,	control	de	eventos,	control	de
excepciones,	proveedores	y	servicios,	etc.
Es	relevante	comentar	que	en	esta	carpeta	no	existe	un	subdirectorio	específico	para	los	modelos,	sino	que
se	colocan	directamente	colgando	de	app,	como	archivos	sueltos.
La	carpeta	Http	que	cuelga	de	App	contiene	a	su	vez	diversas	carpetas	importantes,	como	es	el	caso	de
aquella	donde	guardamos	los	controladores,	middleware,	así	como	el	archivo	de	rutas	de	la	aplicación
routes.php	que	vimos	anteriormente,	entre	otras	cosas.
Conclusión
Hemos	podido	conocer	de	una	manera	breve	los	componentes	principales	del	framework	Laravel.	Como
todo	en	la	vida,	visto	así	rápidamente,	nos	puede	parecer	que	son	muchas	cosas	y	difíciles	de	entender	y
usar,	pero	no	debemos	preocuparnos	porque	los	iremos	conociendo	poco	a	poco.	Si	tienes	una	base
razonable	de	conocimientos	de	PHP	y	patrones	de	diseño	orientado	a	objetos	te	resultará	fácil	usarlos
leyendo	los	siguientes	artículos	del	Manual	de	Laravel.
Este	artículo	es	obra	de	Miguel	Angel	Alvarez
Fue	publicado	por	primera	vez	en	08/07/2015
Disponible	online	en	http://desarrolloweb.com/articulos/estructura-carpetas-laravel5.html
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://desarrolloweb.com/articulos/estructura-carpetas-laravel5.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 31 de 163
Verbos	en	las	rutas	de	Laravel
Explicamos	cómo	el	HTTP	Routing	System	de	Laravel	5	permite	la	configuración	de	diversos
verbos	con	los	que	especificar	qué	tipo	de	operación	se	desea	realizar.
El	sistema	de	rutas	de	Laravel	es	bastante	sencillo	de	utilizar,	por	lo	que	en	pocos	pasos	podremos	crear
todo	tipo	de	rutas	bastante	complejas.	No	obstante,	al	ser	tan	potente,	si	quieres	analizarlo	en	profundidad
gastarás	tiempo.	En	este	artículo	pretendemos	hacer	una	primera	aproximación	al	sistema	de	enrutado	de
solicitudes	HTTP,	analizando	lo	que	son	los	verbos	de	las	solicitudes.	En	futuras	entregas	analizaremos
otros	elementos	fundamentales.
Para	comenzar	no	está	de	más	una	primera	pasada	por	la	documentación	oficial,	que	de	un	vistazo	rápido	te
dará	una	idea	sobre	la	multitud	de	cosas	que	podrás	realizar	y	configurar.	Nosotros	estamos	utilizando
como	referencia	para	este	artículo	la	documentación	del	sistema	de	rutas	de	Laravel	5.1.
Primero	queremos	recordar	que	en	el	Manual	de	Laravel	5	ya	explicamos	cómo	realizar	una	primera	ruta
simple	y	vimos	cosas	como	la	configuración	de	las	funciones	anónimas	o	closures	para	especificar	el	tipo	de
tratamiento	que	se	debe	realizar	para	cada	ruta.	Esto	lo	puedes	encontrar	en	el	artículo	Primera	prueba	de
Laravel	con	el	sistema	de	rutas	y	para	no	repetirnos	hay	cosas	que	no	volveremos	a	explicar.
Verbos	HTTP
Ya	los	mencionamos,	pero	cabe	incidir	de	nuevo	sobre	los	verbos	HTTP	porque	forman	parte	de	las	rutas
Laravel.	Los	verbos	del	HTTP	son	algo	relativo	al	protocolo	de	comunicación	HTTP,	usado	en	la	web,	por
lo	tanto	no	tienen	que	ver	con	Laravel	específicamente.
Sirven	para	decir	el	tipo	de	acción	que	quieres	realizar	con	un	recurso	(la	URL),	siendo	posible	especificar
en	el	protocolo	(la	formalidad	de	la	conexión	por	HTTP	entre	distintas	máquinas)	el	verbo	o	acción	que
deseamos	realizar.
Son	8	verbos	en	el	protocolo:	Head,	Get,	Post,	Put,	Delete,	Trace,	Options,	Connect.	Y	si	ya	eres
desarrollador	web	y	no	te	suena	haberlos	usado	nunca	te	diré	que	realmente	no	es	así.	Get	es	la	acción	que
se	usa	en	el	protocolo	habitualmente,	cuando	se	consulta	un	recurso.	Sirve	para	recuperar	información.	Post
por	su	parte	es	la	acción	que	se	realiza	cuando	se	mandan	datos,	de	un	formulario	generalmente.	Los	otros
verbos	no	se	usan	de	una	manera	muy	habitual,	pero	sí	se	han	dado	utilidad	en	el	desarrollo	de	lo	que	se
conoce	como	API	REST.
Laravel	ya	viene	preparado	para	implementar	APIs	REST,	así	que	usa	los	verbos	del	protocolo	para	generar
http://laravel.com/docs/5.1/routing
http://www.desarrolloweb.com/manuales/manual-laravel-5.html
http://www.desarrolloweb.com/articulos/primera-prueba-laravel-sistema-rutas.html
http://www.desarrolloweb.com/articulos/que-es-rest-caracteristicas-sistemas.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 32 de 163
sus	rutas	de	aplicación.	De	momento	nos	debe	quedar	claro	que	el	acceso	a	un	URI	como	"/test"	puede
tener	diversos	verbos	a	la	hora	de	realizarse	por	parte	de	un	sistema.	Para	Laravel	el	acceso	a	"/test"	(o
cualquier	otro	URI)	usando	la	acción	Get	no	es	el	mismo	que	el	acceso	a	"/test"	usando	la	acción	Post.
En	resumen,	el	significado	de	los	verbos	es:
Get:	recuperar	información,	podemos	enviar	datos	para	indicar	qué	se	desea	recuperar,	pero
mediante	get	en	principio	no	se	debería	generar	nada,	ningún	tipo	de	recurso	en	el	servidor	o
aplicación,	porque	los	datos	se	verán	en	la	URL	y	puede	ser	inseguro.
Post:	enviar	datos	que	se	indicarán	en	la	propia.	Esos	datos	no	se	verán	en	la	solicitud,	puesto	que
viajan	con	la	información	del	protocolo.
Put:	esto	sirve	para	enviar	un	recurso,	subir	archivos	al	servidor,	por	ejemplo.	No	está	activo	en
muchas	configuraciones	de	servidores	web.	Con	put	se	supone	que	los	datos	que	estamos	enviando
son	para	que	se	cree	algún	tipo	de	recurso	en	el	servidor.
Delete:	borrado	de	algo.
Trace,	patch,	link,	unlink,	options	y	connect…	no	están	entre	los	verbos	comunes	de	Laravel,
por	lo	que	te	referimos	a	la	Wikipedia	para	más	información.
Registrando	rutas	con	sus	verbos
Las	rutas	se	registran	con	los	verbos,	usando	el	método	correspondiente	de	la	fachada	Route.	Ya	se	ha
mencionado	pero	lo	repetimos:	Todo	el	listado	de	rutas	que	queramos	producir	se	debe	escribir	en	el
fichero	app/Http/routes.php
Nota:	Es	la	primera	vez	en	este	manual	que	usamos	la	terminología	"fachada"	que	es	un	patrón	de
diseño	de	software	orientado	a	objetos	usada	de	manera	intensiva	en	Laravel.	Podrás	encontrar
referencias	a	este	patrón	a	partir	de	la	palabra	"facade",	en	inglés.	De	momento	vamos	a	obviar	esa
palabra	para	tratarla	en	detalle	más	adelante.
La	clase	Route	(la	fachada	del	sistema	de	rutas)	tiene	varios	métodos	estáticos	con	los	verbos	sobre	los	que
queremos	dar	de	alta	una	ruta	de	la	aplicación.	Anteriormente	comentamos	que	estos	métodos	reciben	dos
parámetros,	uno	el	patrón	o	URI	que	queremos	registrar	y	otro	la	función	con	el	código	a	ejecutar.
Route::get('/probando/ruta', function(){
 //código a ejecutar cuando se produzca esa ruta y el verbo 
 return 'get';
});
Route::post('/probando/ruta', function(){
 //código a ejecutar cuando se produzca esa rutay el verbo POST
 return 'post';
});
http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 33 de 163
Route::put('/probando/ruta', function(){
 //código a ejecutar cuando se produzca esa rutay el verbo PUT
 return 'put';
});
Route::delete('/probando/ruta', function(){
 //código a ejecutar cuando se produzca esa rutay el verbo DELETE
 return 'delete';
});
Usar varios verbos a la vez al registrar una ruta
Como	puedes	imaginar,	existen	casos	en	los	que	te	puede	interesar	registrar	una	ruta	que	tenga	validez	con
varios	verbos,	indicando	una	única	función	que	los	resuelva	todos.	Esto	se	puede	conseguir	mediante	dos
métodos	distintos.
Route::match(['get', 'post, 'put''], '/testing', function () {
 echo 'Ruta testing para los verbos GET, POST, PUT';
});
Como	puedes	apreciar,	el	método	match	requiere	un	parámetro	adicional,	el	primero,	en	el	que	indicamos
un	array	con	los	verbos	que	queremos	aplicar	a	esta	ruta.
Por	otra	parte	tenemos	el	método	any,	que	es	como	un	comodín,	que	sirve	para	cualquier	tipo	de	verbo	del
HTTP.
Route::any("/cualquiercosa", function(){
 echo 'La ruta /cualquiercosa asociada a cualquierverbo';
});
Cómo	probar	los	verbos	de	HTTP
Desde	un	navegador	podrás	probar	fácilmente	cualquier	ruta	con	el	verbo	GET.	Será	simplemente	escribir
la	URL	en	la	barra	de	direcciones	del	navegador.	Sin	embargo,	para	probar	el	método	post	necesitarás
crearte	un	formulario.	Y	si	se	trata	de	probar	PUT	o	DELETE	la	cosa	es	más	complicada	porque
necesitarías	algún	tipo	de	script	especial.
Pero	hay	una	alternativa	muy	cómoda	que	te	permitirá	probar	cualquier	tipo	de	verbo	y	enviar	cualquier	tipo
de	parámetro	en	la	solicitud	HTTP.	Se	trata	de	utilizar	algún	cliente	Rest	que	podemos	descargar	como
complemento	en	el	navegador.
Una	posibilidad	es	Postman,	un	cliente	REST	que	es	muy	fácil	de	usar.	Esta	extensión	disponible	en
Chrome	o	también	en	Firefox.
A	través	de	esta	herramienta	eres	capaz	de	escribir	una	URL,	el	método	o	verbo	de	la	conexión	y	a	través
del	envío	de	la	solicitud	(botón	send)	recibir	y	visualizar	la	respuesta	de	Laravel.
Así	que	con	postman	ya	podemos	crear	todo	tipo	de	rutas	en	el	sistema	de	enrutamiento	y	comprobar	qué
https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm/related
https://addons.mozilla.org/es/firefox/addon/restclient/
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 34 de 163
es	lo	que	está	pasando.	Como	sugerencia	os	indico	justamente	eso,	probar	distintos	verbos,	crear	el	código
para	registrar	las	rutas	y	ejecutarlas	a	través	de	Postman.
Nota:	Si	quieres	probar	rutas	diferentes	de	GET	observarás	que	no	se	puede.	Al	intentar	hacer	post,	put
o	delete	te	sale	un	mensaje:	"TokenMismatchException".
Esto	es	debido	a	que	en	Laravel	está	activado	un	sistema	antispam	para	solicitudes	diferentes	de	GET,
potencialmente	más	peligrosas,	por	el	cual	se	debe	comprobar	un	token.	Hablaremos	de	ello	más	adelante.
De	momento	vamos	simplemente	a	desactivarlo.
En	el	archivo	app/Http/Kernel.php	encontrarás	el	"global	HTTP	middleware	stack",	osea	la	pila	de
middlewares	que	se	ejecutan	de	manera	global	en	las	solicitudes	HTTP.	Busca	la	línea	que	hace	la	carga	de
VerifyCsrfToken::class,	y	coméntala.
//\App\Http\Middleware\VerifyCsrfToken::class,
Conclusión
Hemos	hablado	de	verbos	en	la	solicitud	HTTP,	y	a	la	vez	hemos	continuado	aprendiendo	del	sistema	de
routing	de	Laravel.	Pero	nos	gustaría	que	quedase	claro	que	desde	el	navegador	generalmente	vas	a	realizar
siempre	solicitudes	GET,	o	POST	si	envias	datos	de	formulario.
Para	usar	los	otros	verbos	que	puedes	controlar	en	Laravel	realmente	necesitas	de	un	cliente	REST,	que	sea
capaz	de	ejecutar	acciones	como	PUT	o	DELETE.	Tendrán	sentido	usar	en	tus	rutas	cuando	estés
construyendo	un	API	REST	con	Laravel.
Este	artículo	es	obra	de	Carlos	Ruiz	Ruso
Fue	publicado	por	primera	vez	en	16/07/2015
Disponible	online	en	http://desarrolloweb.com/articulos/verbos-rutas-laravel.html
Parámetros	en	las	rutas	de	Laravel	5
Explicaciones	detalladas	sobre	cómo	trabajar	con	parámetros	en	las	rutas	del	framework	PHP
Laravel,	versión	5.
En	el	Manual	de	Laravel	5	hemos	comenzado	a	tratar	el	sistema	de	rutas	en	profundidad.	En	el	artículo
anterior	os	hablábamos	sobre	las	rutas	y	sus	verbos	HTTP,	en	este	momento	vamos	a	dedicarnos	a	algunos
temas	relacionados	con	el	paso	de	parámetros.
Las	rutas	en	las	aplicaciones	web	corresponden	con	patrones	en	los	que	en	algunas	ocasiones	se	encuentran
textos	fijos	y	en	otras	ocasiones	textos	que	van	a	ser	variables.	A	lo	largo	de	este	artículo	nos	vamos	a	referir
a	esos	textos	variables	con	el	nombre	de	parámetros	y	se	pueden	producir	con	una	sintaxis	de	llaves.
http://desarrolloweb.com/articulos/verbos-rutas-laravel.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 35 de 163
Veamos	varias	rutas	de	una	supuesta	aplicación	para	entender	qué	es	esto	de	los	parámetros.
example.com/colaboradores/miguel
example.com/colaboradores/carlos
example.com/tienda/productos/34
example.com/agenda/julio/2015
example.com/categoria/php
example.com/categoria/php/2
Podrás	apreciar	esas	rutas	y	verás	que	hay	zonas	que	son	variables,	por	ejemplo,	el	nombre	del	colaborador
que	se	pretende	ver,	el	identificador	del	producto	de	una	tienda,	el	mes	y	el	año	de	una	agenda,	la	categoría
que	se	desea	ver	o	la	página	de	un	hipotético	listado	de	artículos	de	una	categoría.
Crear	rutas	con	parámetros
A	continuación	vamos	a	mostrar	cómo	se	podrían	crear	algunas	de	esas	rutas	anteriores	en	el	sistema	de
routing	de	Laravel.
Route::get('colaboradores/{nombre}', function($nombre){
 return "Mostrando el colaborador $nombre";
});
Como	puedes	observar,	en	este	ejemplo	el	nombre	del	colaborador	es	variable,	por	ello	se	expresa	como	un
parámetro,	encerrado	entre	llaves.	En	la	función	closure	recibimos	el	parámetro	y	podemos	trabajar	con	él,
como	con	cualquier	parámetro	de	una	función.
El	nombre	del	parámetro	(variable	con	la	que	recibimos	ese	parámetro	en	la	función	anónima	o	closure)	es
independiente,	como	puedes	ver	en	el	siguiente	ejemplo.	Podríamos	tener	en	el	patrón	de	la	ruta	definido	el
{id}	y	luego	recibir	ese	dato	en	una	variable	$id_producto.	Lo	que	importa	en	este	caso	es	el	orden	con	el
que	se	han	definido	los	parámetros	en	el	patrón	del	URI.
Route::get('tienda/productos/{id}', function($id_producto){
 return "Mostrando el producto $id_producto de la tienda";
});
Se	pueden	enviar	varios	parámetros	si	se	desea.	Simplemente	los	recogeremos	en	la	función,	de	una	manera
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 36 de 163
similar.
Route::get('agenda/{mes}/{ano}', function($mes, $ano){
 return "Viendo la agenda de $mes de $ano";
});
Aquí	lo	importante	no	son	el	nombre	de	las	variables	con	las	que	recoges	los	parámetros,	sino	el	orden	en	el
que	fueron	declarados	en	el	patrón	de	la	URI.	Primero	recibimos	el	parámetro	$mes	porque	en	la	URI
figura	con	anterioridad.	Recuerda	que	el	patrón	era	algo	como	"agenda/julio/2015".
Enviar	los	parámetros	a	los	controladores
Aunque	todavía	no	hemos	hablado	de	los	controladores,	queremos	poner	un	ejemplo	aquí,	aunque
realmente	no	cambia	mucho	sobre	lo	que	hemos	visto.
Nota:	Aunque	no	hayamos	explicado	qué	son	los	controladores	estamos	seguros	que	muchos	de	los
lectores	están	familiarizados	con	esa	terminología,	en	ellos	estamos	pensando	cuando	escribimos	estas
líneas.	Luego	hablaremos	de	lo	que	hacen	los	controladores	con	detalle	pero	para	aclarar	conceptos	el
lector	que	lo	necesite	puede	ir	revisando	el	artículo	sobre	Qué	es	MVC.
Al	definir	una	ruta	a	un	controlador	tenemos	que	indicarlo	en	el	método	que	registra	la	ruta.	En	ese	método,
en	lugar	de	definir	una	función	anónima	indicaremos	el	nombre	y	método	del	controlador	a	ejecutar.
Route::get('tienda/productos/{id}','TiendaController@producto');
Luego	en	el	controlador	recibimos	el	parámetro	definido	en	el	patrón	de	URI	de	la	ruta	registrada.
public function producto($id)
{
 return "Esto muestra un producto. Recibiendo $id";
}
Parámetros	opcionales
Hay	ocasiones	en	las	que	se	especifican	parámetros	que	tienen	valores	opcionales.	Mira	las	siguientes	rutas:
example.com/categoria/php
example.com/categoria/php/2
Como	puedes	comprobar,	a	veces	indicamos	la	página	de	categoría	que	se	desea	mostrar	y	a	veces	no	se
indica	nada.	Esto	imitaría	el	funcionamiento	de	un	paginador,	en	la	que,	si	no	se	recibe	nada,	se	mostraría	la
primera	página	y	si	se	indica	un	número	de	página	se	mostraría	esa	en	concreto.
http://www.desarrolloweb.com/articulos/que-es-mvc.html
Manual de Laravel 5
http://desarrolloweb.com/manuales/manual-laravel-5.html Página 37 de 163
Los	parámetros	opcionales	en	Laravel	se	indican	con	un	símbolo	de	interrogación.	En	este	código	en	el
patrón	de	la	URI	observarás	que	la	página	es	opcional.
Route::get('categoria/{categoria}/{pagina?}', function($categoria, $pagina = 1){
 return "Viendo categoría $categoria y página $pagina";
});
Resultará	de	utilidad,	al	definir	el	closure,	indicar	un	valor	por	defecto	para	aquellos	parámetros	que	son

Continuar navegando