swiftmailer slim framework

Par Michel Mve, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.
Voici l'erreur:
Slim Application Error
The application could not run because of the following error:

Details
Type: Error
Message: Call to undefined method Swift_SmtpTransport::newInstance()
File: C:\wamp64\www\slim\app\Commander\dependencies.php
Line: 68

Voici ma page dependencies.php

<?php use Respect\Validation\Validator as v; v::with('App\\Validation\\Rules\\'); $container = $app->getContainer(); $container['debug'] = function () { return true; }; // Service factory for the ORM $capsule = new \Illuminate\Database\Capsule\Manager; $capsule->addConnection($container['settings']['db']); $capsule->setAsGlobal(); $capsule->bootEloquent(); $container['db'] = function ($container) use ($capsule) { return $capsule; }; // toggle mode: development -> production $container['dev'] = function () { return true; }; $container['csrf'] = function ($c) { return new \Slim\Csrf\Guard; }; $container['flash'] = function ($container) { return new \Slim\Flash\Messages; }; // instanciation du rendre des vue twig $container['view'] = function ($container) { $view = new \Slim\Views\Twig(__DIR__ .'/../../app/Templates', [ 'cache' => $container->dev ? false : (__DIR__) . '/../tmp/cache/twig', 'debug' => $container->dev, 'auto_reload' => $container->dev ]); if ($container->dev) { $view->addExtension(new Twig_Extension_Debug()); } // Instantiate and add Slim specific extension $basePath = rtrim(str_ireplace('index.php','', $container['request']->getUri()->getBasePath()),'/'); $view->addExtension(new \Slim\Views\TwigExtension($container['router'], $basePath)); $view->addExtension(new \App\Extensions\CsrfExtension($container['csrf'])); $view->getEnvironment()->addGlobal('flash', $container->flash); return $view; }; // mail sender (swift_mailer) $container['mailer'] = function($container) { if ($container->debug) { $transport = Swift_SmtpTransport::newInstance('localhost',1025); }else { $transport = Swift_Transport::newInstance(); } $mailer = Swift_Mailer::newInstance($transport); return $mailer; }; ...

Voici mon code au niveau de pageController.php

public function postContact(RequestInterface $request, ResponseInterface $response){ $message = Swift_Message::newInstance('Message de contact') ->setFrom([$request->getParam('email') => $request->getParam('name')]) ->setTo('contact@monsite.fr') ->setBody("Un email vous a été envoyé : {$request->getParam('content')}"); $this->mailer->send($message); $this->flash('Votre message a bien été envoyé'); return $this->redirect($response, 'contact'); }

Merci pour votre aide

9 réponses

Huggy, il y a 8 ans

Oui cette méthode est dépréciée depuis 5.4.5 et retirée depuis la 6.0
il faut utiliser le constructeur par défaut à la place

// Create the Transport $transport = new Swift_SmtpTransport('smtp.example.org', 25);
Michel Mve, il y a 8 ans

Bonjour Huggy,
J'ai testé et regardeé la documentation sur https://swiftmailer.symfony.com/docs/introduction.html.
Merci pour ton aide, Seulement j'ai d'autres erreurs
Slim Application Error
The application could not run because of the following error:

Details
Type: Error
Message: Call to a member function get() on null
File: C:\wamp64\www\slim\app\Modules\Controller.php
Line: 66

betaWeb, il y a 8 ans

Salut,

Peux-tu nous montrer ce que tu as à la ligne 66 de ton Controller.php ?

Michel Mve, il y a 8 ans

Voici ce que j'ai :

public function __get($name) { return $this->container->get($name); //ligne 66 }
betaWeb, il y a 8 ans

Et donc qu'est-ce que tu en conclues quant à l'erreur retournée ?

Michel Mve, il y a 8 ans

la function get() est nulle donc ne revoie rien

betaWeb, il y a 8 ans

Voilà. Donc c'est que ton container n'est pas correctement instancié.

Michel Mve, il y a 8 ans

Bsr betaWeb Merci pour tes conseils.
Stp aide moi comment comment bien instancié le container?
Parce que j'ai éssayé je n'arrive pas merci.

betaWeb, il y a 8 ans

Tu as suivi les tutos de @grafikart sur Slim ? Sinon vas voir la documentation, tout y est très bien expliqué :)