2012-09-24 5 views
1
는 CakePHP는 2.0, CakeEmail 새로운 구성 요소를 사용하여 출력하지 플래시 메시지에 보인다

플래시 메시지를 렌더링CakeEmail : 내가 넣어 내 컨트롤러에서 : 없음

$email = new CakeEmail(array('log'=>true)); 
$email->transport('Debug'); 

를 내보기에

echo $this->Session->flash('email'); 

그러나 아무것도 인쇄되지 않습니다. 2.0에서 해당 기능 (플래시)이 제거 되었습니까?

답변

1

은 물론 CakePHP는 2.0 플래시 기능이 있습니다.

//controller 
$this->Session->setFlash('email'); 

//view 
echo $this->Session->flash(); 

// 위 출력됩니다.

<div id="flashMessage" class="message"> 
'email'. 
</div> 
2

케이크 이메일 라이브러리 나 구성 요소 또는 전송 클래스가 세션을 터치하거나 그러한 플래시 컨텐츠를 작성하지 않습니다. 그들은 내가 아는 한 결코하지 않았다. 하지만 이메일 내용을 DebugTransport의 배열로 반환합니다.

그래서 당신은 반환 된 배열을 가져오고 그것을 멀리 기록 할 것 : 그런

$res = $this->Email->send(); 
$this->Session->setFlash($res ? 'Email sent' : 'Email not sent'); 

또는 STH를. 당신이보기에 UR 플래시 메시지를 얻고 싶다면 http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html

당신이 먼저 컨트롤러의 행동을 설정해야합니다 : 자세한 내용은 여기를 확인하기위한

+0

1.3에 나와 있습니다. 메일을 디버그로 보내면 대신 세션 var에 저장하고 테스트를 위해 서버가 필요하지 않습니다. http://book.cakephp.org/1.3/view/1635/Debugging-Emails 방금 말한대로 2.0 – petervaz

+0

에서 작동하는지 모르겠다. cake2.x의 전자 메일에는 세션에 대한 액세스 권한이 전혀 없습니다. 논리적으로는 그렇게 할 수 없습니다. 반환 된 데이터를 사용하여 이메일을 디버깅하는 새로운 "더 나은"방법을 사용하십시오. – mark

+0

알았어요. 나는 그들이 너를 위해 "나는 결코 알지 못했던"것에 대해 예언하고 있었는데, 어느 시점에서 그러했듯이, 나는 너가 단지 2.x에 대해서 말하는 것을 이해한다. – petervaz

0

Cake 2.x에서 디버그 전송은 세션에서 전자 메일 내용을 설정하지 않습니다. 반환 값 $contents = $email->send();을 확인하십시오. $ 내용은 헤더와 메시지를 포함하므로 필요에 따라 사용하십시오.

0
$response = $Email->send(); 

$response['headers']; // headers as string 
$response['message']; // message body with attachments 

$this->Session->setFlash($response['headers'].$response['message']); 

레이아웃 파일에 다음 사항이 있는지 확인하십시오.

echo $this->Session->flash(); 
관련 문제