2016-11-19 18 views
0

Slim v3 PHP 프레임 워크를 사용하고 있으며 PHPMailer를 통합하여 메일을 보내고 있습니다. Twig와 같은 템플릿 엔진을 사용하지 않지만 보통 PHP를 사용합니다.슬림 프레임 워크 및 PHPmailer 전자 메일 템플릿 렌더링 문제

제 생각에는 일반 페이지 템플리트와 비슷한 전자 메일 용 HTML5 템플리트를 별도의 파일로 만든 다음 일부 변수를 전달하고 렌더링 한 후 보냅니다. 한 부분을 제외하고는 모두 잘 작동합니다. 렌더링 된 출력은 헤더 정보를 렌더링했습니다.

이 내 코드는 물론

// Store variables in an array 
$email_content = array(
    'email__name' => $_POST['name'], 
    'email__from' => $_POST['from'], 
    'email__message' => $_POST['message'] 
); 

// Render email template 
$template = $this->view->render($response, "email/simple_email.phtml", $email_content); 

을 단순화 같은 모습입니다 그리고 내가 PHPMailer

$mail->msgHTML($template); 

와이를 보내 문제 HTML 내용의 위에 나는이 헤더 데이터를 얻을 수 있다는 것입니다, 전송 된 이메일에 표시됩니다.

HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 

출력이 없으면 출력 할 수 있습니까? 내가 이것을 제거하기 위해 str_replace()를 사용하고있는 순간, 그러나 이것에 대처할 수있는 우아한 내장 솔루션이 있다고 생각하십니까?

답변

6

#render() 메서드는 응답에 대한 모든 정보와 헤더 정보를 포함하는 Psr\Http\Message\ResponseInterface을 반환합니다.

오직 html 만 원한다면, #fetch() 메소드를 html 만 리턴하는 뷰에서 사용하십시오.

$template = $this->view->fetch("email/simple_email.phtml", $email_content);