2012-02-13 3 views
2

FOSUserBundle에서 Mailer 클래스를 확장하는 방법을 아는 사람이 있습니까?FOSUserBundle에서 symfony 메일러 클래스 확장하기

매우 기본적인 학부모 이메일 확인을 구현하고 있습니다 (부모의 이메일을 강제로 입력하기 위해 양식에서 모든 유효성 검사가 수행됩니다), 부모 이메일 필드가 사용자 엔터티에 채워진 다음 이메일을 보내면 그 주소는 사용자의 이메일이 아닙니다. 나는 지금까지 다음과 같은 시도

은 : 그것은 단지 비록 오버라이드 (override) 클래스를 무시하고 기본값을 사용하는 것

namespace SSERugby\UserBundle\Mailer; 

use FOS\UserBundle\Mailer\Mailer as BaseMailer; 
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface; 
use Symfony\Component\Routing\RouterInterface; 

class Mailer extends BaseMailer 
{ 
public function sendConfirmationEmailMessage(UserInterface $user) 
{ 
    $email = $user->getEmail(); 

    $parentEmail = $user->getParentEmail(); 

    if(isset($parentEmail)&&(trim($parentEmail)!='')){ 
     $email = $parentEmail; 
    } 

    $template = $this->parameters['confirmation.template']; 
    $url = $this->router->generate('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), true); 
    $rendered = $this->templating->render($template, array(
     'user' => $user, 
     'confirmationUrl' => $url 
    )); 
    $this->sendEmailMessage($rendered, $this->parameters['from_email']['confirmation'], $email); 
} 
} 

, 내가 테스트하기 전에 캐시를 삭제했다.

감사

당신은 확장 된 메일 클래스와 새로운 서비스를 만들어야합니다

답변

5

(SRC에 \ SSERugby \ UserBundle \ 자료 \ 설정 \ services.xml 파일)과 같은 :

<service id="my_mailer" class="SSERugby\UserBundle\Mailer\Mailer" public="true"> 
    <argument type="service" id="mailer" /> 
    <argument type="service" id="router" /> 
    <argument type="service" id="templating" /> 
    <argument type="collection"> 
     <argument key="confirmation.template">%fos_user.registration.confirmation.template%</argument> 
     <argument key="resetting.template">%fos_user.resetting.email.template%</argument> 
     <argument key="from_email" type="collection"> 
      <argument key="confirmation">%fos_user.registration.confirmation.from_email%</argument> 
      <argument key="resetting">%fos_user.resetting.email.from_email%</argument> 
     </argument> 
    </argument> 
</service> 

다음 응용 프로그램에서

/설정/기본적으로이 서비스를 사용 config.yml :

fos_user: 
    # ... 
    service: 
     mailer: my_mailer 

을 참고 : 나는 FOSUserBundle 기본 메일러 설정에서 모든 서비스의 인수를 복사됩니다. 자신의 매개 변수를 추가 할 수 있습니다. 맞춤 메일러에 대해서도 읽을 수 있습니다. https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/emails.md

관련 문제