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 SubscribeCorre:
composer recipes:update
Lo siguiente es doctrine-extensions-bundle
. Este... cuando miramos... ¡sólo modificamos un comentario! Fácil!. Así que confirma eso... y luego pasa a debug-bundle
.
composer recipes:update
Limpia la pantalla y ejecuta eso. Esto ha hecho dos cambios. Ejecutar:
git status
El primer cambio fue que eliminó un archivo específico del entorno... y lo trasladó al archivo principal. El segundo cambio, que no es muy habitual en las actualizaciones de recetas, es que en config/bundles.php
, antes cargaba DebugBundle
en el entorno dev
y en el entorno test
. Ahora recomendamos cargarlo sólo en el entorno dev
. Puedes cargarlo en el entorno test
, pero tiende a ralentizar las cosas, así que se ha eliminado por defecto.
... lines 1 - 2 | |
return [ | |
... lines 4 - 9 | |
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], | |
... lines 11 - 24 | |
]; |
¡Es fácil! Confirma esos cambios... ¡y sigue adelante!
composer recipes:update
El siguiente es symfony/monolog-bundle
. Este tiene un conflicto, pero es bastante sencillo. Anteriormente, teníamos archivos específicos del entorno en los directorios dev/
, prod/
, y test/
. Todos ellos se han trasladado al archivo centralconfig/packages/monolog.yaml
. La única razón por la que había un conflicto en mi proyecto es porque había creado previamente este archivo en un tutorial para añadir un nuevo canal markdown
. Moveré mi canal markdown
aquí abajo... y mantendré lo nuevo.
monolog: | |
channels: | |
- markdown | |
... lines 4 - 63 |
Debajo de esto, puedes ver la configuración dev
para el registro, la configuración test
y la configuración prod
. De nuevo, si tenías una configuración personalizada en tus archivos antiguos, asegúrate de traerla al nuevo archivo para que no se pierda.
... lines 1 - 5 | |
when@dev: | |
monolog: | |
handlers: | |
main: | |
type: stream | |
... lines 11 - 26 | |
when@test: | |
monolog: | |
handlers: | |
main: | |
type: fingers_crossed | |
... lines 32 - 40 | |
when@prod: | |
monolog: | |
handlers: | |
main: | |
type: fingers_crossed | |
... lines 46 - 63 |
Añade estos cambios... y... confirma.
Luego vuelve a la derecha:
composer recipes:update
¡Nos estamos acercando! Actualiza symfony/routing
. Veamos. Esto ha eliminado otro archivo de configuración específico del entorno. ¡Sí! ¡Menos archivos! También destaca un nuevodefault_uri
config que se establece si alguna vez necesitas generar URLs absolutas desde dentro de un comando.
Antes lo hacías configurando los parámetros de router.request_context
. Ahora es más fácil, y esto lo anuncia.
framework: | |
router: | |
utf8: true | |
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands. | |
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands | |
#default_uri: http://localhost | |
when@prod: | |
framework: | |
router: | |
strict_requirements: null |
Confirma esto... ¡y sigamos!
composer recipes:update
Hemos llegado a symfony/security-bundle
. Éste tiene un conflicto... y está dentro de config/packages/security.yaml
. Están ocurriendo algunas cosas importantes. La actualización de la receta ha añadido enable_authenticator_manager: true
. Esto habilita el nuevo sistema de seguridad. Hablaremos de ello más adelante. Por ahora, pon esto en false
para que sigamos utilizando el antiguo sistema de seguridad.
security: | |
... lines 2 - 9 | |
enable_authenticator_manager: false | |
... lines 11 - 64 |
También ha añadido algo llamado password_hashers
, que sustituye a encoders
. También vamos a hablar de eso más adelante. Por ahora, quiero que mantengas ambas cosas.
security: | |
encoders: | |
App\Entity\User: | |
algorithm: auto | |
... lines 5 - 11 | |
password_hashers: | |
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' | |
... lines 14 - 64 |
También hay un conflicto en el cortafuegos. El cambio importante es que la nueva receta tiene lazy: true
. Eso sustituye a anonymous: lazy
, así que podemos seguir adelante y mantener ese cambio... pero utilizar el resto de nuestro cortafuegos.
security: | |
... lines 2 - 20 | |
firewalls: | |
... lines 22 - 24 | |
main: | |
lazy: true | |
provider: app_user_provider | |
guard: | |
authenticators: | |
- App\Security\LoginFormAuthenticator | |
logout: | |
path: app_logout | |
... lines 33 - 64 |
Ah, y en la parte inferior, tenemos una nueva y brillante sección when@test
, que establece un hasher de contraseña personalizado. Puedes leer el comentario. Esto acelera tus pruebas haciendo mucho más rápido el hash de las contraseñas en el entorno de pruebas, donde no nos importa la seguridad de nuestro algoritmo de hash.
... lines 1 - 51 | |
when@test: | |
security: | |
password_hashers: | |
# By default, password hashers are resource intensive and take time. This is | |
# important to generate secure password hashes. In tests however, secure hashes | |
# are not important, waste resources and increase test times. The following | |
# reduces the work factor to the lowest possible values. | |
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: | |
algorithm: auto | |
cost: 4 # Lowest possible value for bcrypt | |
time_cost: 3 # Lowest possible value for argon | |
memory_cost: 10 # Lowest possible value for argon |
Añadamos los archivos... y sigamos.
Lo siguiente es symfony/translation
. Esto no es importante... sólo muestra algunas opciones de configuración nuevas. Todas están comentadas, así que... es bueno verlas, pero no son importantes.
framework: | |
... line 2 | |
translator: | |
... lines 4 - 6 | |
# providers: | |
# crowdin: | |
# dsn: '%env(CROWDIN_DSN)%' | |
# loco: | |
# dsn: '%env(LOCO_DSN)%' | |
# lokalise: | |
# dsn: '%env(LOKALISE_DSN)%' |
Confirma y... ¡sigue adelante!
Lo siguiente es symfony/validator
. ¡Es muy sencillo! Esto movió la configuración deconfig/test/validator.yaml
a la principal validator.yaml
.
¡Confírmalo!
Vamos a actualizar una receta más ahora mismo: web-profiler-bundle
. ¿Adivinas lo que ha hecho? Ha añadido más configuración específica del entorno. Así que la configuración dedev/web_profiler.yaml
y test/web_profiler.yaml
se trasladó a la principalweb_profiler.yaml
. Lo mismo ocurrió con las rutas. La configuración dedev
se trasladó a un nuevo config/routes/web_profiler.yaml
. Vamos a confirmarlo y... ¡uf! ¡Casi lo hemos conseguido! ¡Sólo quedan dos recetas!
Vamos a actualizarlas. La receta WebpackEncoreBundle también nos dará la oportunidad de actualizar nuestro JavaScript a la nueva versión Stimulus 3.
Hey Kevin!
I think you found a second bug! I swear, this command has been used a LOT, and we've only found about 4 bugs... I think 2 of them you just found :p.
Here is the culprit. Your original recipe contained this (now-removed) line: https://github.com/symfony/...
That causes a "locale" parameter to be added to services.yaml. It is absent in the new recipe. The recipe update system *should* effectively turn this into a "diff" that removes that local parameter from services.yaml. My guess is that, instead, it calculated this as "there was a services.yaml before, there is not one now, so I should remove services.yaml". That is obviously incorrect. I'll check into it.
Cheers!
My pleasure :). And here is the PR to fix this second issue - https://github.com/symfony/... - thanks again for reporting!
// 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
}
}
Hello again.
I moved onto updating the symfony/translation recipe and why on earth is it trying to delete my config/services.yaml?
`
Which outdated recipe would you like to update? (default: 0)
[0] stof/doctrine-extensions-bundle
[1] symfony/monolog-bundle
[2] symfony/swiftmailer-bundle
[3] symfony/translation
[4] symfony/validator
[5] symfony/web-profiler-bundle
[6] symfony/webpack-encore-bundle
> 3
Updating recipe for symfony/translation...
Yes! Recipe updated!
Run git status or git diff --cached to see the changes.
When you're ready, commit these changes like normal.
Kevins-MBP-2:www.site.com kevin$ git status
On branch develop
Your branch is ahead of 'origin/develop' by 15 commits.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
`
Seems aggressive and I didn't see that it did that for you in the video.
Thoughts?
-Kevin