사용자가 로그인 할 수있는 간단한 웹 사이트가 있다고 가정 해보십시오. 로그인 한 상태에서 (손님)이 아닌 사용자와 다른 메시지를 표시하려고합니다. 이 메시지는 메시지를 메시지에 추가하여 자리 표시 자에 렌더링해야합니다.자리 표시자를 컨트롤러에서 수정해야합니까?
어디서해야합니까? 내 컨트롤러가 사용자가 로그인했는지 여부를 확인한 다음 $this->view->placeholder("sidebar")->append()
사용자가 로그인 할 수있는 간단한 웹 사이트가 있다고 가정 해보십시오. 로그인 한 상태에서 (손님)이 아닌 사용자와 다른 메시지를 표시하려고합니다. 이 메시지는 메시지를 메시지에 추가하여 자리 표시 자에 렌더링해야합니다.자리 표시자를 컨트롤러에서 수정해야합니까?
어디서해야합니까? 내 컨트롤러가 사용자가 로그인했는지 여부를 확인한 다음 $this->view->placeholder("sidebar")->append()
레이아웃 자체에 넣지 않는 이유는 무엇입니까?
예를 들어 다음과 같은 상황이 종종 레이아웃에 영향을 미칩니다. 사용자가 로그인 한 경우 사용자 이름, 프로필보기/편집 링크 및 로그 아웃 링크를 표시하려고합니다. 그가 로그인하지 않았다면 나는 로그인 할 수있는 링크와 등록 할 링크를 보여줍니다.
이 모든 것을 처리하는 코드는 Zend_Auth::hasIdentity()
, Zend_Auth::getIdentity()
및 url()
보기 도우미를 사용합니다. 레이아웃 코드를 좀 더 가볍게 유지하기 위해, 나는 종종이 모든 것을 내 자신의 뷰 헬퍼로 밀어 넣어 authLinks()
과 같은 것으로 호출했다.
을 통해 자리 표시 자에 추가하는 것이 더 좋은 해결책은 현재 사용자의 인증 상태에 따라 레이아웃을 전환하는 것일 수 있습니다. 이 작업은 preDispatch의 플러그인 또는 컨트롤러의 preDispatch에서 수행 할 수 있습니다. 보기 계층에 표시 논리를 배치하면 메시지를 변경하기로 결정한 경우 저수준 코드를 업데이트하거나 모두 제거 할 필요가 없습니다.
인증 상태를 확인하고 컨트롤러에서보기를 업데이트하는 것에 대한 우려를 야기하고 사용자가 컨트롤러에서 작성한 모든 컨트롤러에 적절한 코드를 넣는 것에 대해 걱정할 필요가 없으므로 개인적으로 controller plugin을 선택합니다. 미래.
개인 취향의 문제입니다. 저는 항상 그 책임을 견해에 위임합니다. 그렇기 때문에 견해에 의해 다루어 져야합니다.
나는 또한 비슷한 방식으로합니다. – Marcin
좋은 소리, 고마워요! –