2016-06-10 3 views
1

안녕하세요, Symfony3를 가지고 놀고 있습니다. 서비스 컨테이너에 대해이 docs을 읽었습니다.Symfony3 서비스 컨테이너 문서 오류

# app/config/services.yml 
services: 
    app.mailer: 
     class:  AppBundle\Mailer 
     arguments: [sendmail] 

내가 이렇게 내 컨트롤러/클래스에 액세스 할 수 있습니다 : 나는 exacley했던

<?php 

namespace Test\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class HelloController extends Controller 
{ 
    public function sendEmailAction() 
    { 
     // ... 
     $mailer = $this->get('app.mailer'); 
     var_dump($mailer);die(); 
//  $mailer->send('[email protected]', ...); 
    } 
} 

서비스가과 같이 응용 프로그램/설정/services.yml에 선언 된 문서 주문에 따라 하지만이 오류가 발생합니다.

You have requested a non-existent service "app.mailer". 

이 간단한 예제에서 내가 무엇을 할 수 있습니까?

또한 Bundle/Resources/config.srvices.yml 아래에 다른 services/yml 파일이 있음을 발견했습니다. 언제 그리고 왜 ... 사용할 것인가?

+0

sendmail 인수가 잘못되어 문제가 발생하지 않았기 때문에 문서를 다시 확인하십시오. 프로덕션 모드에서 실행 중이며 캐시를 지우지 않았을 것으로 판단됩니다. 그리고 이전 버전의 S2와 달리 S3를 실행하고 있습니까? – Cerad

+0

이봐, 논쟁이 왜 틀린거야? 어느 쪽이든 그 경우 다른 오류가 발생해야합니다, 나는 내 ur에 캐시를 지웠습니까? localhost : 8000/app_dev.php/뭐든간에 지정하십시오. 게다가 문서는 3.1 버전이라고합니다. – John

+0

"sendmail"이라는 문자열을 생성자 인수로 보내고 싶다는 생각이 조금 이상하다고 생각했습니다. 그러나 언급했듯이 이러한 종류의 오류는 발생하지 않습니다. yaml 파일에 탭이 아닌 공백을 사용하고 있습니까? config.yml의 가져 오기 섹션에는 여전히 서비스가 있습니다. 모두 매우 신비 롭다. 새 프로젝트를 시작하고 하나의 서비스를 만들고 기본 컨트롤러에서 호출 해보십시오. – Cerad

답변

0

서비스 app.mailer는 존재하지 않는 것 같습니다. 당신은 CLI에서이 명령을 실행하여 확인해야합니다 : 당신은 당신의 번들가 다른 응용 프로그램/오픈 소스와 공유 할 경우에만 Bundle/Resources/config/*를 사용한다 bin/console debug:container app.mailer

I have also noticed that there is another services/yml file under Bundle/Resources/config.srvices.yml. Which one to use when and why...?

. 그렇지 않은 경우 app/config/services.yml을 사용하십시오.

+0

두 번째 부분에 대해서는 당신이 이해하지만, $ this ...에 오타가 있습니까? – John

+0

오류가 'on null'입니까? 전체 컨트롤러를 공유 할 수 있습니까? – mykiwi

+0

내 업데이트를 보시기 바랍니다 – John