2011-04-18 6 views
0

사용자가 로그인 할 수있는 간단한 웹 사이트가 있다고 가정 해보십시오. 로그인 한 상태에서 (손님)이 아닌 사용자와 다른 메시지를 표시하려고합니다. 이 메시지는 메시지를 메시지에 추가하여 자리 표시 자에 렌더링해야합니다.자리 표시자를 컨트롤러에서 수정해야합니까?

어디서해야합니까? 내 컨트롤러가 사용자가 로그인했는지 여부를 확인한 다음 $this->view->placeholder("sidebar")->append()

답변

2

레이아웃 자체에 넣지 않는 이유는 무엇입니까?

예를 들어 다음과 같은 상황이 종종 레이아웃에 영향을 미칩니다. 사용자가 로그인 한 경우 사용자 이름, 프로필보기/편집 링크 및 로그 아웃 링크를 표시하려고합니다. 그가 로그인하지 않았다면 나는 로그인 할 수있는 링크와 등록 할 링크를 보여줍니다.

이 모든 것을 처리하는 코드는 Zend_Auth::hasIdentity(), Zend_Auth::getIdentity()url()보기 도우미를 사용합니다. 레이아웃 코드를 좀 더 가볍게 유지하기 위해, 나는 종종이 모든 것을 내 자신의 뷰 헬퍼로 밀어 넣어 authLinks()과 같은 것으로 호출했다.

+0

나는 또한 비슷한 방식으로합니다. – Marcin

+0

좋은 소리, 고마워요! –

2

을 통해 자리 표시 자에 추가하는 것이 더 좋은 해결책은 현재 사용자의 인증 상태에 따라 레이아웃을 전환하는 것일 수 있습니다. 이 작업은 preDispatch의 플러그인 또는 컨트롤러의 preDispatch에서 수행 할 수 있습니다. 보기 계층에 표시 논리를 배치하면 메시지를 변경하기로 결정한 경우 저수준 코드를 업데이트하거나 모두 제거 할 필요가 없습니다.

인증 상태를 확인하고 컨트롤러에서보기를 업데이트하는 것에 대한 우려를 야기하고 사용자가 컨트롤러에서 작성한 모든 컨트롤러에 적절한 코드를 넣는 것에 대해 걱정할 필요가 없으므로 개인적으로 controller plugin을 선택합니다. 미래.

1

개인 취향의 문제입니다. 저는 항상 그 책임을 견해에 위임합니다. 그렇기 때문에 견해에 의해 다루어 져야합니다.

관련 문제