2014-11-15 3 views
1

저는 Symfony를 처음 사용하기 때문에 메일을 구성하고 보내는 것에 대해 질문이 생깁니다. 사실 저는 컨트롤러에서 메일을 구성하고 보내고 있지만 저에게는 메일이 컨트롤러에 없지만 .ini 파일이나 다른 것으로 구성하는 것이 좋습니다. 따라서 올바른 방법은 메일을 클래스가 아닌 코드에서 구성 할 수 있으므로 서비스로 구성하는 것이 올바른 방법이라고 생각했습니다. symfony 2에서 메일러 서비스 만들기

내가 클래스를 만들어, 그는 다음과 같습니다 값의 $ 이메일과 $ 암호가 컨트롤러에서 와야한다

class PwMailer{ 
protected $mailer; 

public function setMailer($mailer) 
{ 
    $this->mailer = $mailer; 
} 

public function sendEmail($email, $password) 
{ 
    $message = \Swift_Message::newInstance() 
     ->setSubject('New Password') 
     ->setFrom('[email protected]') 
     ->setTo($email) 
     ->setBody('Your new Password is '.$password) 
    ; 
    $this->mailer->send($message); 
} 

}

. 내 설정 파일의 응용 프로그램에서 \ 설정 \ config.yml 나는 그것을 구성 : 오류 :

services: 
    pw_mailer: 
    class:  Pso\LogBundle\PwMailer 
    arguments: [sendmail] 

나는

$mailer = new Mailer('pw_mailer'); 
$mailer->send(); 

가 지금은 오류 "FatalErrorException있어 컨트롤러에서 서비스를 호출 클래스 '.. .Mailer ... 컨트롤러 '

내 코드가 http://symfony.com/doc/current/book/service_container.htmlHow can I send emails from a Symfony2 service class?

에서 믹스 내가 힌트에 대한 기쁠 것입니다'에서 찾을 수 없습니다 '서비스 접점 경우 클래스가 아닌 컨트롤러에서 메일을 구성하기위한 iner는 올바른 방법이며 사고의 실수는 어디에서 발생합니까? 지금까지는 서비스 컨테이너의 구성이 정확하게 작동하는 방법에 대해서는 잘 모르고있었습니다.

+0

'서비스 : pw_mailer는'두 번째 줄이 첫 번째 정렬하지 않아야을 다음은 세터를 사용하여 메일 발송 서비스를 주입하기 위해 DIC를 구성하는 것이 방법이다. – Cheery

+0

그것은 아주 흔한 오해입니다. 새로운 메일러가 어떻게 든 컨테이너에 액세스하지만 두 컨테이너는 완전히 독립적이라고 생각합니다. 초보자로서 $ mailer = $ this-> container-> get ('pw_mailer'); 나는 당신이 몇 가지 더 많은 이슈들에 또한 빠질 것이라고 생각한다. 매뉴얼에서 예제를 먼저 얻고 싶다면 먼저 수정하십시오. – Cerad

+0

나는 작은 것을 시도했다. 줄 $ this-> mailer-> send ($ message); 클래스에서 실제로 오류가 발생합니다. "FatalErrorException : Error :"객체에서 sendmail() 멤버 함수를 호출하면 "컨트롤러에서 컨테이너로 매개 변수를 제공 할 수 없다는 것을 의미합니까? 별도의 클래스 또는 ini 파일에서 메일 매개 변수를 구성 할 수 있습니까? – Micha

답변

0

서비스

인사는 외부 의존성, 특히 메일러 서비스가 있습니다. 서비스 컨테이너 자체를 주입하거나 메일러 서비스를 주입 할 수 있습니다. 귀하의 서비스가 메일러 서비스 만 필요로하고 다른 서비스는 필요하지 않은 경우 메일러 서비스를 제공하는 것이 좋습니다.

services: 
    pw_mailer: 
     class:  Pso\LogBundle\PwMailer 
     arguments: [mailer] 
관련 문제