Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir,
J'avance péniblement dans la prise en main de ZF2.
Je consulte donc les différents blogs et ce forum.
J'ai essayé d'étudier les fabriques et je suis tombé sur un excellent article de bakura :
How to use ZendMail
J'ai donc essayé de mettre sa solution en place à partir du Skeleton et le tester dans le module Application :
placement des fichiers :
- MessageFactory.php => /vendor/zendframework/zendframework/library/Common/Mail/Service/
- SmtpTransportFactory.php => /vendor/zendframework/zendframework/library/Common/Mail/Service/
- Mailer.php => /vendor/zendframework/zendframework/library/Common/Service/
Modification du fichier du module Application : Module.php
(...) class Module { (...) public function getServiceConfiguration() { return array( 'shared' => array( 'common.mailer.default_message' => false ), 'factories' => array( 'common.mailer.smtp_transport' => new Common\Mail\Service\SmtpTransportFactory(), 'common.mailer.default_message' => new Common\Mail\MessageFactory() ) ); }
Modification du fichier du module Application : module.config
(...) return array( 'router' => array(... ), (...) 'mailer' => array( 'default_message' => array( 'from' => array( 'email' => 'adresse@email.fr', 'name' => 'Nom' ), 'encoding' => 'utf-8' ), 'smtp_options' => array( 'name' => 'localhost.localdomain', 'host' => '127.0.0.1', 'port' => 25, ) ) );
Dans le contrôleur IndexController.php
(...) public function indexAction() { $mailer = $this->getServiceLocator()->get('common.service.mailer'); $message = $mailer->createHtmlMessage('email@adresse.fr', 'Test', 'application/index/email.phtml'); $mailer->send($message); } (...)
Avec ceci, j'ai le message suivant :
Zend\ServiceManager\Exception\ServiceNotFoundException
Fichier:C:\wamp\www\test\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php:450
Message:Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for common.service.mailer
Pouvez-vous m'éclairer ?
Dernière modification par manuclin (19-11-2012 20:50:16)
Hors ligne
Salut là c'est assez simple il trouve pas la factory situé à common.service.mailer. Tu as une partie de la réponse ici http://www.z-f.fr/forum/viewtopic.php?id=8261
Hors ligne
Merci Orkin pour ta réponse.
Je cherche toujours :
La configuration est récupérée correctement :
public function indexAction() { $config = $this->getServiceLocator()->get('Configuration'); return array('content' => print_r($config['mailer'], true)); }
le résultat :
Array (
[default_message] => Array (
[from] => Array (
[email]=> adresse@email.fr
[name] => Nom
)
[encoding] => utf-8
)
[smtp_options] => Array (
[name] => localhost.localdomain
[host] => 127.0.0.1
[port] => 25
)
)
Il semble qu'il faut ajouter un élément de configuration pour que le framework puisse trouver :
Common\Mail\Service\SmtpTransportFactory()
Common\Mail\MessageFactory()
à l'emplacement :
/vendor/zendframework/zendframework/library/Common/Mail/Service/
Quelqu'un peut-il m'aider ?
Dernière modification par manuclin (20-11-2012 12:19:00)
Hors ligne