If you liked what you've learned so far, dive in!
Subscribe to get access to this tutorial plus
video, code and script downloads.
With a Subscription, click any sentence in the script to jump to that part of the video!
Login Subscribe¡Sigamos actualizando las recetas! Hay un montón de ellas que hacer, pero la mayorÃa serán fáciles. Nos moveremos rápidamente, pero destacaré los cambios importantes a medida que avancemos.
Para la siguiente actualización, vamos a saltar a symfony/console
ya que es otra importante.
composer recipes:update symfony/console
Esto actualiza sólo un archivo: bin/console
. Comprueba los cambios con:
git diff --cached bin/console
Hmm. Ha pasado de ser un poco largo a ser... ¡bastante corto! Esto es, una vez más, el componente Symfony Runtime en acción. El código para arrancar Symfony para la consola se ha trasladado a symfony/runtime
. Y... esto arregló nuestro comando bin/console
, que estaba roto desde que actualizamos la receta de FrameworkBundle.
Confirmemos este cambio... y sigamos:
composer recipes:update
Baja hasta symfony/twig-bundle
. Es el número 7
. Voy a limpiar la pantalla y... ¡bien! Tenemos conflictos. ¡Emocionante! Borraré el registro de cambios, ya que lo he mirado. Vale, esto ha borrado un archivo de configuración especÃfico del entorno... y entonces tenemos dos conflictos. Vamos a ver config/packages/twig.yaml
.
Una vez más, vemos la nueva función de configuración especÃfica del entorno. Estas cosas dewhen@test
solÃan vivir en config/packages/test/twig.yaml
, pero ahora se han trasladado aquÃ. Y como tengo una configuración personalizada de form_themes
, entraba en conflicto. Queremos mantener ambas cosas.
twig: | |
... line 2 | |
form_themes: ['bootstrap_4_layout.html.twig'] | |
when@test: | |
twig: | |
strict_variables: true |
El segundo conflicto está en templates/base.html.twig
. Nuestro base.html.twig
está bastante personalizado, asà que probablemente no tengamos que preocuparnos por ningún cambio nuevo. La receta añadió un nuevo favicon
por defecto. Probablemente no lo utilices, ya que tendrás el tuyo propio. Para solucionar este conflicto, ya que mi proyecto no tiene todavÃa un favicon
, copiaré lo nuevo, usaré nuestro código, pero pegaré el favicon
.
... lines 1 - 2 | |
<head> | |
... line 4 | |
<title>{% block title %}Welcome!{% endblock %}</title> | |
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>â«ï¸</text></svg>"> | |
... lines 7 - 14 | |
</head> | |
... lines 16 - 95 |
Perfecto Ahora podemos confirmar todo.
¡Sigamos adelante!
composer recipes:update
Trabajaremos en el resto de arriba a abajo. Lo siguiente es doctrine/doctrine-bundle
. Esta es una actualización genial. Una vez más, voy a limpiar la pantalla y ejecutar:
git status
Se ha producido un conflicto dentro del archivo .env
... que es probablemente el cambio menos interesante. Recientemente, la receta de DoctrineBundle empezó a enviarse con PostgreSQL como base de datos por defecto. Puedes cambiarlo totalmente para que sea lo que quieras, pero PostgreSQL es un motor de base de datos tan bueno que empezamos a enviarlo como sugerencia por defecto.
Pero yo estoy usando MySQL en este proyecto, asà que voy a mantenerlo. Pero para ser superguay, al menos tomaré su nueva configuración de ejemplo... que parece un poco diferente... y actualizaré mis comentarios encima con ella. Luego utilizaré mi versión del conflicto. El resultado final son unos cuantos retoques en los comentarios, pero nada más.
... lines 1 - 24 | |
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" | |
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7&charset=utf8mb4" | |
# DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8" | |
DATABASE_URL="mysql://root@127.0.0.1:3306/symfony6_upgrade?serverVersion=5.7" | |
... lines 29 - 30 |
Los otros cambios de la receta se refieren a los archivos de configuración, y seguro que puedes ver lo que ocurre. Ha eliminado dos archivos de configuración especÃficos del entorno y ha actualizado el principal. Hmm.
Abre config/packages/doctrine.yaml
. Efectivamente, en la parte inferior vemos when@test
y when@prod
. ¡Qué bien! Ahora todo está en un solo archivo. Sólo asegúrate de que si tienes alguna configuración personalizada en los antiguos archivos eliminados, la trasladas a este archivo.
... lines 1 - 18 | |
when@test: | |
doctrine: | |
dbal: | |
# "TEST_TOKEN" is typically set by ParaTest | |
dbname_suffix: '_test%env(default::TEST_TOKEN)%' | |
when@prod: | |
doctrine: | |
orm: | |
auto_generate_proxy_classes: false | |
... lines 29 - 43 |
Otro cambio nuevo es este dbname_suffix
bajo when@test
. Esto es genial. Cuando ejecutes pruebas, esto reutilizará automáticamente la misma configuración de conexión a la base de datos, pero con un nombre de base de datos diferente: tu nombre normal seguido de _test
. Y esta parte elegante del final hace que sea muy fácil ejecutar pruebas paralelas con Paratest. Esto garantizará que cada proceso paralelo utilice un nombre de base de datos diferente. Todo esto lo consigues, de forma gratuita, gracias a la receta actualizada.
Hay otro cambio en este archivo, y es importante. En PHPStorm, puedo ver que la actualización de la receta ha eliminado la lÃnea type: annotation
. Ahora mismo, seguimos utilizando anotaciones en nuestro proyecto para la configuración de las entidades. Vamos a cambiar eso en unos minutos para utilizar los atributos de PHP 8, que va a ser increÃble. Pero de todos modos, en la configuración de DoctrineBundle, ya no necesitas esta lÃnea type: annotation
. Si no la tienes, el formato correcto se detectará automáticamente. Si Doctrine ve anotaciones, cargará anotaciones; si ve atributos de PHP 8, los cargará. Asà que la mejor configuración es no tenerla... lo que le dice a Doctrine que descubra las cosas por nosotros.
Una vez más, añade todos estos cambios, haz un commit, y... ¡continuemos! ¡Bueno, sigamos en el próximo capÃtulo, donde actualizaremos DoctrineExtensionsBundle, algunas recetas de depuración, enrutamiento, seguridad y más!
Hey Julien,
It seems related to another your issue, please take a look at my answer: https://symfonycasts.com/sc... . Otherwise, please, tell us what exactly command you executed. Btw, it might be so that you have no changes after updating the recipe, most probably your code already matches the latest recipe content and so it only modifies symfony.lock to update the hash.
Cheers!
// composer.json
{
"require": {
"php": "^8.0.2",
"ext-ctype": "*",
"ext-iconv": "*",
"babdev/pagerfanta-bundle": "^3.6", // v3.6.1
"composer/package-versions-deprecated": "^1.11", // 1.11.99.5
"doctrine/annotations": "^1.13", // 1.13.2
"doctrine/dbal": "^3.3", // 3.3.5
"doctrine/doctrine-bundle": "^2.0", // 2.6.2
"doctrine/doctrine-migrations-bundle": "^3.2", // 3.2.2
"doctrine/orm": "^2.0", // 2.11.2
"knplabs/knp-markdown-bundle": "^1.8", // 1.10.0
"knplabs/knp-time-bundle": "^1.18", // v1.18.0
"pagerfanta/doctrine-orm-adapter": "^3.6", // v3.6.1
"pagerfanta/twig": "^3.6", // v3.6.1
"sensio/framework-extra-bundle": "^6.0", // v6.2.6
"sentry/sentry-symfony": "^4.0", // 4.2.8
"stof/doctrine-extensions-bundle": "^1.5", // v1.7.0
"symfony/asset": "6.0.*", // v6.0.7
"symfony/console": "6.0.*", // v6.0.7
"symfony/dotenv": "6.0.*", // v6.0.5
"symfony/flex": "^2.1", // v2.1.7
"symfony/form": "6.0.*", // v6.0.7
"symfony/framework-bundle": "6.0.*", // v6.0.7
"symfony/mailer": "6.0.*", // v6.0.5
"symfony/monolog-bundle": "^3.0", // v3.7.1
"symfony/property-access": "6.0.*", // v6.0.7
"symfony/property-info": "6.0.*", // v6.0.7
"symfony/proxy-manager-bridge": "6.0.*", // v6.0.6
"symfony/routing": "6.0.*", // v6.0.5
"symfony/runtime": "6.0.*", // v6.0.7
"symfony/security-bundle": "6.0.*", // v6.0.5
"symfony/serializer": "6.0.*", // v6.0.7
"symfony/stopwatch": "6.0.*", // v6.0.5
"symfony/twig-bundle": "6.0.*", // v6.0.3
"symfony/ux-chartjs": "^2.0", // v2.1.0
"symfony/validator": "6.0.*", // v6.0.7
"symfony/webpack-encore-bundle": "^1.7", // v1.14.0
"symfony/yaml": "6.0.*", // v6.0.3
"symfonycasts/verify-email-bundle": "^1.7", // v1.10.0
"twig/extra-bundle": "^2.12|^3.0", // v3.3.8
"twig/string-extra": "^3.3", // v3.3.5
"twig/twig": "^2.12|^3.0" // v3.3.10
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.4", // 3.4.1
"phpunit/phpunit": "^9.5", // 9.5.20
"rector/rector": "^0.12.17", // 0.12.20
"symfony/debug-bundle": "6.0.*", // v6.0.3
"symfony/maker-bundle": "^1.15", // v1.38.0
"symfony/var-dumper": "6.0.*", // v6.0.6
"symfony/web-profiler-bundle": "6.0.*", // v6.0.6
"zenstruck/foundry": "^1.16" // v1.18.0
}
}
I think there is something not working with my setup, I got only this change now
`
`