Primera página y controlador
Para crear nuestra primera página basta con crear un nuevo documento PHP
// src/Controller/LuckyController.php
namespace
App\Controller
;
use
Symfony\Component\HttpFoundation\Response
;
class
LuckyController
{
public
function
number
()
{
$number
=
mt_rand
(
0
,
100
);
return
new
Response
(
'Lucky number: '
.
$number
.
''
);
}
}
Y luego añadir en nuestro archivo config/routes.yaml
la siguiente línea:
app_lucky_number:
path:
/lucky/number
controller:
App\Controller\LuckyController::number
Si entramos en localhost:8000/lucky/number veremos el resultado.
Anotaciones
Para evitar tener que poner cada ruta en este archivo manualmente, usaremos las anotaciones. Para instalar estas (añadir la dependencia) desde el directorio del proyecto en la consola ejecutamos:
composer
require annotations
Con esto ya podremos eliminar las líneas que habíamos puesto en routes.yaml
// src/Controller/LuckyController.php
namespace
App\Controller
;
use
Symfony\Component\HttpFoundation\Response
;
use
Symfony\Component\Routing\Annotation\Route
;
class
LuckyController
{
/**
*
@Route("/lucky/number")
*
@return
Response
*/
public
function
number
()
{
$number
=
mt_rand
(
0
,
100
);
return
new
Response
(
'Lucky number: '
.
$number
.
''
);
}
}
Si entramos en localhost:8000/lucky/number veremos como todo sigue funcionando de la misma manera. Una vez en este punto al intentar desplegar en Heroku me dio problemas:
Script
cache:clear returned with error code 255
!!
PHP
Fatal error: Uncaught RuntimeException: APP_ENV environment variable is not defined. You need to define environment variables for configuration or add
"symfony/dotenv"
as a Composer dependency to load variables from a .env file. in /tmp/build_28bf132bc15e00a1674b37dec1340dc6/CrisKrus-My-Symfony-Project-f31cfde/bin/console:20
!!
Stack
trace:
!! #
0
{main}
!!
thrown
in /tmp/build_28bf132bc15e00a1674b37dec1340dc6/CrisKrus-My-Symfony-Project-f31cfde/bin/console on line 20
!!
!
Push
rejected, failed to compile PHP app.
!
Push
failed
Para solucionar este problema basta con seguir las instrucciones del error, las cuales nos indica que con añadir la dependencia de “dotenv” con Composer, estando dentro del directorio del proyecto.
composer
require dotenv
Otro problema mas, si nos dirigimos a la aplicación una vez ya tenemos todo en master correctamente, veremos como no hay nada desplegado realmente. Eso es porque no hemos indicado que directorio es el que queremos que use, se lo tenemos que indicar de la siguiente forma. Creando el archivo Procfile indicando al servidor de Heroku que carpeta, public en nuestro caso.
web
: vendor/bin/heroku-php-apache2 public/
Añadir framework-extra-bundle dependencia. *Esto no se hasta que punto es realmente necesario.
composer
require sensio/framework-extra-bundle
Referencias
Symfony, primera página
Symfony, extra bundle dependencia
Symfony, crear procfile