2009-04-28 3 views
1

CakePHP 버전 1.2 (최신)를 사용하는 간단한 웹 응용 프로그램을 작성 중이며 세션 도우미에서 플래시 메시지를 표시하는 데 문제가 있습니다. 다음과 같은 요소를 렌더링

<?php echo $this->renderElement('flash'); ?> 

: 내 레이아웃에서 다음 코드가 존재

원하는 동작이 플래시 메시지가 있다면이 표시되도록, 표시 할 수 있다는 것입니다
<?php if($session->check('Message.flash')): ?> 
    <?php $class = isset($error) ? 'contentError' : 'contentSuccess'; ?> 
    <div class="contentBlockWrapper <?php echo $class; ?>"> 
     <div class="contentBlock"> 
      <div id="flashMessage" class="flash"> 
       <?php $session->flash(); ?> 
      </div> 
     </div> 
    </div> 
<?php endif; ?> 

DOM 내의 위의 위치를 ​​사용하여 원하는대로 스타일을 지정하고 배치 할 수 있습니다.

플래시 메시지가있는 경우 CakePHP는 <body> 태그가 열린 직후 렌더링합니다. 이제는 위에서 설명한 컨테이너를 올바른 위치에 렌더링하지만 원하는 위치에 텍스트를 쓰지는 않습니다.

출력 버퍼를 내보기 내의 변수에 플러시하고 echo'ing했지만 아무 소용이없는 시도했습니다. 어떤 사람들은 이름이 지정된 키를 사용하여 표시하려는 특정 메시지를 표시하려고 시도했지만 일부 텍스트는 표시하려는 텍스트가 잘못된 위치에 표시되기 때문에 적절하지 않습니다.

도움을 주시면 감사하겠습니다. - 감사합니다!

+0

요소를 렌더링하기 위해 호출 위치를 지정 했더라도 항상 케이크가 body 태그 바로 뒤에 올 것입니다. 내 응용 프로그램 (그냥 테스트)에서 $ session-> flash 호출 (DOM 내에서 생성 된 소스보기)이있는 곳이면 어디서나 렌더링됩니다. 정말 레이아웃에 맞습니까? 레이아웃보기를 게시 하시겠습니까 (bin.cakephp.org를 사용하고 링크를 남겨 두십시오). 감사합니다. –

+0

보기 자체가 아닌 요소에 난제가 있기 때문에 어쩌면 궁금합니다. 엘리먼트 밖으로 이동해보고 작동하는지 확인하겠습니다. 피드백에 감사드립니다! – inkedmn

답변

1

나는 당신이 아마 플래시가 렌더링을 취소 그래서

$session->flash(); 

을 말한다 레이아웃에 남은 것 같아요. 이것이 엘리먼트에서 렌더링되지 않는 이유입니다.

~/app/views/layouts/default.ctp (기본값을 사용하지 않는 경우)을 확인하고 도움이되는지 알려주십시오.

1

컨트롤러에서 setFlash()를 호출 할 때 변환 함수를 사용하면 두 번째 매개 변수로 "true"가 전달되었는지 확인하십시오. 이렇게 :

$ this-> Session-> setFlash (__ ('My Message Here', TRUE)));

그렇지 않으면 메시지가 반향되지 않고 반향됩니다. 페이지의 HTML 코드 앞에 붙여진 것을 보게 될 것이고 setFlash로 보내지는 메시지는 정의되지 않을 것이고 그래서 당신이 기대하는 곳에 나타나지 않을 것입니다.

관련 문제