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


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);

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

Salut,

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

Voici ce que j'ai :

  public function __get($name) {
    return $this->container->get($name); //ligne 66
    }

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

la function get() est nulle donc ne revoie rien

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

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.

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