Usar Symfony desde 0 en ubuntu parte 5 primera pagina y controlador

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

Usar Symfony desde 0 en ubuntu parte 4 configurar el IDE Phpstorm

Configurar el IDE

En este caso usaré para el desarrollo el PhpStorm, instalaremos el plug-in de Symfony desde > File > Settings > Plugins > Browse repositories…

Donde lo buscaremos e instalaremos.

Una vez instalados lo configuraremos para nuestro proyecto > File > Settings > Languages & Frameworks > PHP > Symfony

Marcamos Enable Plugin for this Project cerramos el proyecto y lo volvemos a abrir.

Tras ello podemos configurar el estilo del código de acuerdo con Symfony, si queremos > File > Settings > Editor > Code Style > PHP > Set from… > Predefined Style > Symfony

Referencias

Jetbrains, instalar add-ons

Usar Symfony desde 0 en ubuntu parte 3 desplegar en Heroku

Desplegar en Heroku

Tras subir el proyecto a Github, podremos desplegarlo en Heroku de manera bastante sencilla.

  1. Entramos a nuestra cuenta de Heroku y creamos una nueva aplicación.
  2. Le damos un nombre y en la parte de desplegar deployment lo conectamos con nuestra cuenta de Github.
  3. Buscamos nuestro proyecto y lo seleccionamos.
  4. A continuación, para evitarnos tener que desplegar cada versión a mano y dado que trabajaremos desde la rama develop en nuestro repositorio, marcamos la opción de Enable Automatic Deploys haciendo que con cada push a master, se despliegue automáticamente.
  5. En caso de que sea necesaria una base de datos, vamos a la pestaña Resources luego en el apartado Add-ons y pulsamos sobre Find more add-ons donde veremos los distintos add-ons disponibles, entre ellos bases de datos como MongoDB y PostgreSQL.

Usar Symfony desde 0 en ubuntu parte 2 iniciar proyecto Symfony

Iniciar el proyecto Symfony

Estando en el directorio en el que queremos crear el proyecto ejecutamos

composer create-project symfony/skeleton my_project

Siendo my_project el nombre del proyecto.

Una vez descargado todo, se crea el árbol de directorios y nos indica que debemos entrar en el directorio del proyecto y ejecutar

php -S 127.0.0.1:8000 public/index.php

Con ello nuestro terminal quedara “inutilizado” ejecutando el proyecto, para cerrarla bastara con pulsar la combinación de teclas Ctrl + c

Tras ello si vamos a nuestro explorador web y entramos en http://localhost:8000/ veremos la pagina de inicio de nuestro proyecto.

NOTA: Se puede usar cualquier otro puerto si este se encuentra en uso, en mi caso el 8000 no hay problema.

Referencias

Symfont, configuracion symfony

Curso en video, primeros pasos con symfony