Flag of Ukraine
SymfonyCasts stands united with the people of Ukraine
This tutorial has a new version, check it out!

Cómo Funcionan las Recetas

Video not working?

It looks like your browser may not support the H264 codec. If you're using Linux, try a different browser or try installing the gstreamer0.10-ffmpeg gstreamer0.10-plugins-good packages.

Thanks! This saves us from needing to use Flash or encode videos in multiple formats. And that let's us get back to making more videos :). But as always, please feel free to message us.

¿Dónde viven estas recetas Flex? Viven... en la nube. Específicamente, si miras en https://flex.symfony.com, puedes clickear para ver la receta de cualquier paquete. Esto va a... interesante: un repositorio GitHub llamado symfony/recipes.

Ve a la página principal de ese repositorio. Este es el repositorio central para recetas, organizado por el nombre de los paquetes... y luego cada paquete puede tener diferentes recetas para cada versión. Nuestra receta vive en sensiolabs/security-checker/4.0.

El Código de la Receta

Cada receta tiene al menos este archivo manifest.json, el cual describe todas las "cosas" que tiene que hacer. Este copy-from-recipe dice que el contenido del directorio config/ en la receta debería ser copiado a nuestro proyecto. Esta es la razón por la cual un archivo config/packages/security_checker.yaml fue copiado a nuestra aplicación.

De vuelta en el manifesto, la sección composer-scripts le dice a Flex que agregue esta linea a nuestro archivo composer.json... y los aliases definen... bueno... los aliases que deberían corresponderse con este paquete.

Hay algunas cosas más que una receta puede hacer, pero esta es la idea básica.

Así que... todas las recetas de Symfony viven en este repositorio. Mmm, en realidad, esto no es así: Todas las recetas de symfony viven en este repositorio o en otro llamado recipes-contrib. No hay diferencia entre estos, excepto que el control de calidad es más alto para las recetas del repositorio principal.

Usando Composer Para Ver Recetas

Otra forma de ver los detalles de las recetas es a través del mismo Composer. Corre:

composer recipes

Estas son las 7 recetas que fueron instaladas en nuestra aplicación. Y si corremos:

composer recipes sensiolabs/security-checker

Podemos ver más detalles, como la URL de la receta y los archivos que copió a nuestra aplicación.

El sistema de recetas siempre será nuestro mejor amigo: permitiendo que nuestra app empiece pequeña, pero que crezca automáticamente cuando instalamos nuevos paquetes.

Removiendo un Paquete & Receta

Oh, y si decides que debes remover un paquete, su receta será desinstalada. Echa un vistazo:

composer remove sec-checker

Eso - claro está - removerá el paquete... pero también "desconfiguró" la receta. Cuando corremos:

git status

Está limpio! Revirtió el cambio en composer.json y removió el archivo de configuración.

67 lines composer.json
{
... lines 2 - 3
"require": {
"php": "^7.2.5",
"ext-ctype": "*",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.5",
"symfony/console": "5.0.*",
"symfony/dotenv": "5.0.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "5.0.*",
"symfony/yaml": "5.0.*"
},
... lines 15 - 44
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
... lines 50 - 55
},
... lines 57 - 65
}

A continuación: Instalemos Twig - el sistema de templates de Symfony - para poder crear templates HTML. La receta de Twig va a hacer que esto sea muy fácil.

Leave a comment!

What PHP libraries does this tutorial use?

// composer.json
{
    "require": {
        "php": "^7.3.0 || ^8.0.0",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "easycorp/easy-log-handler": "^1.0.7", // v1.0.9
        "sensio/framework-extra-bundle": "^6.0", // v6.2.1
        "symfony/asset": "5.0.*", // v5.0.11
        "symfony/console": "5.0.*", // v5.0.11
        "symfony/debug-bundle": "5.0.*", // v5.0.11
        "symfony/dotenv": "5.0.*", // v5.0.11
        "symfony/flex": "^1.3.1", // v1.17.5
        "symfony/framework-bundle": "5.0.*", // v5.0.11
        "symfony/monolog-bundle": "^3.0", // v3.5.0
        "symfony/profiler-pack": "*", // v1.0.5
        "symfony/routing": "5.1.*", // v5.1.11
        "symfony/twig-pack": "^1.0", // v1.0.1
        "symfony/var-dumper": "5.0.*", // v5.0.11
        "symfony/webpack-encore-bundle": "^1.7", // v1.8.0
        "symfony/yaml": "5.0.*" // v5.0.11
    },
    "require-dev": {
        "symfony/profiler-pack": "^1.0" // v1.0.5
    }
}