EDIT: जैसा कि मैंने कोड का परीक्षण नहीं किया है, यदि आप मेलर का उदाहरण प्राप्त करने के लिए सेवा कंटेनर का उपयोग नहीं करते हैं तो आपको ट्रांसपोर्ट लेयर भी निर्दिष्ट करना चाहिए। देखें: http://swiftmailer.org/docs/sending.html
आप इसे गलत कर रहे हैं। आप मूल रूप से सेवा चाहते हैं, एक वर्ग नहीं जो Controller
फैलाता है। यह काम नहीं कर रहा है क्योंकि सेवा कंटेनर SendMail()
फ़ंक्शन में उपलब्ध नहीं है।
आपको ईमेल भेजने के लिए सेवा कंटेनर को अपने स्वयं के कस्टम सहायक में इंजेक्ट करना होगा। कुछ उदाहरण:
namespace Blogger\Util;
class MailHelper
{
protected $mailer;
public function __construct(\Swift_Mailer $mailer)
{
$this->mailer = $mailer;
}
public function sendEmail($from, $to, $body, $subject = '')
{
$message = \Swift_Message::newInstance()
->setSubject($subject)
->setFrom($from)
->setTo($to)
->setBody($body);
$this->mailer->send($message);
}
}
एक नियंत्रक कार्रवाई में इसका इस्तेमाल करने के लिए:
class WhateverClass
{
public function whateverFunction()
{
$helper = new MailerHelper(new \Swift_Mailer);
$helper->sendEmail($from, $to, $body);
}
}
या एक कस्टम सेवा में:
services:
mail_helper:
class: namespace Blogger\Util\MailHelper
arguments: ['@mailer']
public function sendAction(/* params here */)
{
$this->get('mail_helper')->sendEmail($from, $to, $body);
}
या कहीं और सेवा कंटेनर पर नहीं जाता कंटेनर तक पहुंच:
namespace Acme\HelloBundle\Service;
class MyService
{
protected $container;
public function setContainer($container) { $this->container = $container; }
public function aFunction()
{
$helper = $this->container->get('mail_helper');
// Send email
}
}
services:
my_service:
class: namespace Acme\HelloBundle\Service\MyService
calls:
- [setContainer, ['@service_container']]
मुझे यह नहीं मिला। क्या वह कोड स्निपेट आपके वर्तमान समाधान के रूप में है, लेकिन आप मेलिंग को कहीं और ले जाना चाहते हैं? यदि यह सही है, तो आपको शायद अपने कस्टम वर्गों में सेवाओं को इंजेक्शन देने के बारे में पढ़ना चाहिए: http://stackoverflow.com/questions/6124444/how-can-i-access-a-service-outside-of-a-controller-with- symfony2 – geca
मैंने FOSUserBundle और FOSFacebookbundle का उपयोग किया है जो मैं चाहता हूं कि उपयोगकर्ता सफलतापूर्वक फेसबुक अकाउंट के साथ लॉगिन करे, मैं अपने पासवर्ड के साथ उपयोगकर्ता को ईमेल भेजना चाहता हूं ताकि वह उस ईमेल पासवर्ड से लॉगिन कर सके, मुझे ईमेल भेजने के लिए प्रदाता कक्षा में फ़ंक्शन लिखना है .... –