FlashMessenger 도우미를 사용하여 Zend Framework에서 (경고, 성공, 오류) 플래시 메시지를 분류하는 가장 쉬운 방법은 무엇입니까? 또한 컨트롤러가 반드시 요청을 전달하지 않을 수도있는 메시지를 확인하는 단일 메서드가 필요합니다. 지금이, 나는 FlashMessenger :: getCurrentMessage()를 통해 이루어 졌다고 생각합니까?Zend Framework의 FlashMessenger 메시지 분류
답변
당신은 당신이 할 수있는 컨트롤러있어에서 :
<?php echo $this->flashMessenger('notice'); ?>
그리고이 같은 오류 :
$this->_helper->FlashMessenger(
array('error' => 'There was a problem with your form submission.')
);
$this->_helper->FlashMessenger(
array('notice' => 'Notice you forgot to input smth.')
);
당신이 볼 수있는 당신은이 같은 통지를 에코 할 수 있습니다
<?php echo $this->flashMessenger('error'); ?>
편집 :
확인 this link :
... 여기에서 일반 getMessages() 메소드를 호출하면 작동하지 않습니다. 이는 FlashMessenger가 인스턴스화 될 때 적절한 ZendSession 네임 스페이스에 저장된 메시지 만 반환합니다. 이 요청을 추가 한 모든 메시지는 그 당시 ZendSession 네임 스페이스에 없었으므로 (FlashMessenger가 메시지를 추가하기 위해 인스턴스화되었으므로) getMessages()에 의해 반환되지 않습니다.
이 사용 사례의 경우 FlashMessenger는 현재 요청에 설정된 메시지를 반환하는 getCurrentMessages()
메서드 (및 현재 메서드의 관련 패밀리)도 제공합니다.
두 가지 아이디어. 로버트 기본으로
1. PHPPlaneta
체크 아웃 PHPlaneta의 소스 코드를 :
https://github.com/robertbasic/phpplaneta
그는 표준 FlashMessenger 액션 도우미 사용
$this->_helper->flashMessenger()->addMessage(array('fm-bad' => 'Error occurred')
을 그런 다음 뷰 도우미를 정의합니다. 그는 메시지에 액세스 할 수 있도록 FlashMessenger이라고합니다. 자신의 레이아웃이나 뷰 스크립트에서 그는 단순히 호출 출력 메시지에 대한 CSS 스타일을 설정 :
<?php echo $this->flashMessenger(); ?>
뷰 도우미가 키 ('fm-bad'
예)를 사용합니다.
2 PriorityMessenger 숀 PO MacCath - 모란에서 우선 순위 메신저보기 도우미 밖으로
확인 :
http://emanaton.com/code/php/zendprioritymessenger
내가 이것에 대해 좋아하는 점은 그 메시지를 저장하는이 모든 사업 다음 페이지로드에 표시하기 위해 완전히 내면에 있어야하는 무언가로 나를 강타합니다. 따라서 리디렉션 전에 메시지와 우선 순위를보기 도우미로 채 웁니다.그런 다음 레이아웃 또는보기 스크립트에서 동일한보기 도우미를 통해 해당 메시지를 우선 순위와 함께 출력합니다.
모두의 의견에 감사드립니다. 그러나 저는 다른 접근 방식을 구현했습니다.
저는 이미 애플리케이션 전반에 공통 로직을 배치 한 Zend_Controller_Action을 확장하는 상위 컨트롤러를 가지고 있으므로 postDispatch() 메소드에서 getCurrentMessages 및 getMessages를 뷰 변수에 병합했습니다.
public function postDispatch()
{
$messages = array_merge(
$this->_helper->flashMessenger->getCurrentMessages(),
$this->_helper->flashMessenger->getMessages()
);
$this->view->messages = count($messages) > 0 ? $messages[0] : array();
}
다음과 같은 컨트롤러 동작을 통해 메시지를 설정합니다.
$this->_helper->flashMessenger(array('error'=>'This is an error'));
그리고 레이아웃 파일에서 $ messages 변수에 조건문을 사용합니다.
<?php if(count($this->messages) > 0) : ?>
//.. my HTML e.g. key($this->messages) returns 'error'
// current($this->messages) returns 'This is an error'
<?php endif; ?>
이 메시지가 분류되고 다음 리디렉션에 추가하여 현재 요청에서 얻을 수 있습니다 나를 위해 작동합니다.
- 1. Zend FlashMessenger 문제
- 2. Zend Framework의 다중 구성
- 3. Zend Framework의 DisplayGroup 데코레이터
- 4. Zend Framework의 url 접미사
- 5. Zend Framework의 Ajax 문제
- 6. Zend Framework의 "Hierarchical"행 집합?
- 7. Zend Framework의 렌더링 레이아웃 부분
- 8. Zend Framework의 ASP.NET MVC 모듈
- 9. Zend Framework의 모듈 사용 사례
- 10. Zend Framework의 사용자 정의 클래스
- 11. Zend Framework의 모든보기 도우미 재설정
- 12. Zend Framework의 모델 로딩 문제
- 13. Zend Framework의 부트 스트랩 반복
- 14. Javascript가 Zend Framework의 Dojo를 닫습니다.
- 15. Zend Framework의 Doctrine 프로필 작성 방법
- 16. Contollers 및 Views - Zend Framework의 MVC
- 17. Zend Framework의 모듈 별 데이터베이스 설정
- 18. Zend Framework의 이전 버전을 설치 하시겠습니까?
- 19. Zend Framework의 컨트롤러 및 레이아웃에서의 데이터 흐름
- 20. ZEND FRAMEWORK의 클래스 라이브러리를 사용하는 방법은 무엇입니까?
- 21. Zend Framework의 httpClient에있는 쿠키와 관련된 문제
- 22. Zend Framework의 데이터베이스 트랜잭션 : 격리되어 있습니까?
- 23. PHP/Zend Framework의 국가 대 시간
- 24. Play Framework의 XML/Json에서의 오류 메시지
- 25. Zend Framework의 양식 요소에 정규식 유효성 검사기 추가
- 26. 분류
- 27. Zend Framework의 테이블, 행 집합 및 행 간의 관계?
- 28. Zend Framework의 요소, 하위 양식 및 belongsTo 사용
- 29. Zend Framework의 부트 스트랩 및 세션 변수에 액세스
- 30. Zend Framework의 부트 스트랩에서 브라우저를 리디렉션 할 수 있습니까?
이를 수행하는 다른 방법은 다음에서 찾을 수 있습니다. http://stackoverflow.com/questions/3950637/type-of-flash-messenger-in-zend – Gardner