Bonjour,
Voila je rencontre un petit problème avec mon code, j'ai récemment upgrader mon site vers la version 5.2 de symfony cependant lors de l'éxecution de mes tests j'ai un message me disant que l'appelle depuis le container est deprecated.
private function bootKernel(string $config): ContainerInterface
{
$this->kernel->setConfigurationFilename(__DIR__.'/fixtures/config/'.$config);
$this->kernel->boot();
$container = $this->kernel->getContainer();
$this->formFactory = $container->get('form.factory');
$this->twig = $container->get('twig');
return $container;
}
J'ai également essayer de créer un service alias de twig
appeller twig.alias
mais j'obtient une erreur me disant que le service n'existe pas.
Ne plus avoir les messages deprecated et avoir des tests clean.
Accessing the "form.factory" service directly from the container is deprecated, use dependency injection instead.
Accessing the "twig" service directly from the container is deprecated, use dependency injection instead.
Bonsoir, j'ai trouver une solution au problème.
Le fait d'utiliser TestCase et d'ensuite demander la configuration avec : $this->kernel->setConfigurationFilename(__DIR__.'/fixtures/config/'.$config);
fait que la configuration était forcément réecrite pour les services.
En effet, voici mon ancien fichier de configuration :
framework:
secret: ThisIsNotReallyASecretSoPleaseChangeIt
validation: { enabled: true }
test: true
session:
storage_id: session.storage.mock_file
form: ~
twig:
strict_variables: true
services:
karser_recaptcha3.google.recaptcha:
class: Karser\Recaptcha3Bundle\Tests\fixtures\RecaptchaMock
public: true
On constate que j'avais rajouter le service de captcha ici, j'ai remplacer la partie services
comme ceci :
services:
karser_recaptcha3.google.recaptcha:
class: Karser\Recaptcha3Bundle\Tests\fixtures\RecaptchaMock
public: true
form.factory.alias:
alias: form.factory
public: true
twig.alias:
alias: twig
public: true
et cela fonctionne désormais. Je fais donc appel aux alias qui sont public plutôt que l'accès direct qui lui est private.
Salut,
essai avec ça :
dans le fichier service.yaml
services:
Symfony\Component\DependencyInjection\ContainerInterface: '@service_container'
Bonsoir ,
J'ai tenter en rajoutant la ligne dans service.yaml malheureusement j'ai toujours le même message :
Since symfony/framework-bundle 5.2: Accessing the "form.factory" service directly from the container is deprecated, use dependency injection instead.
Since symfony/twig-bundle 5.2: Accessing the "twig" service directly from the container is deprecated, use dependency injection instead.