2010-11-25 3 views
0

데이터를 뷰에 전달하고 두 가지 옵션이 있습니다 (더 나은 접근 방법을 알고 있다면 언급하십시오).
Zend_Based ORM 시스템을 사용 중이며 데이터베이스에 새 필드를 추가하면 해당 모델 내에서 자동으로 사용할 수있는 방식으로 코딩됩니다.

첫 번째 : 모델 데이터를 배열로 변환하고 배열을 뷰에 전달합니다. 이렇게하면 뷰 내에서 사용 가능한 모든 데이터를 갖게되지만 모델의 기능/작업을 사용할 수 없게됩니다. 그리고 특정 기능이 필요하다면 동일한 기능이 이미 모델 내에 코딩되어있는 동안 뷰 헬퍼를 코딩 할 것입니다. 예 : 특정 형식으로 날짜를 가져 오는 중.
둘째 : 전체 모델 개체를 뷰에 전달하면 모든 모델의 기능을 사용할 수 있지만 뷰는 모델의 저장 함수에 액세스 할 수 있습니다. 이는 나쁜 것입니다. 모델 내에 더 많은 기능을 추가하여 읽기 전용으로 만들 수 있지만 추가 작업이 필요합니다.

접근 방법이 더 좋습니다.젠드 프레임 워크에서 뷰에 전달 된 객체/모델 데이터를 제어하는 ​​최선의 접근법

답변

1

MVC 원리에 따르면 let the View allow access to the Model에 완벽하게 맞습니다. 따라서 전체 모델을보기로 전달하십시오.

덧붙여서, 주위를 지나가는 배열은 데이터를 (값에 의해) 복사 합니다만, 주위를 통과하는 객체는 참조로는 이동하지 않습니다. (PHP5 가정). 큰 배열은 성능에 영향을 줄 수 있습니다.

+1

모델을 전달하면 모델의 데이터를 변경하고 영구 레이어에 저장할 수도 있습니다. – Bryan

+0

템플릿을 편집하는 다른 사람이 염려하고 '우연히'저장 또는 삭제하도록 모델을 말한 경우 업데이트하면 전체 모델이 아닌 원하는 데이터 만 전달하는 것이 가장 좋습니다. 그러나 Yeroon이 말했듯이, 모델 객체를 전달하는 것은 "나쁘지 않습니다". 이것은 실제로 당신이 스스로 결정해야하는 개인/비즈니스 규칙입니다. 덕분에 –

+0

.
또는 다른 옵션은 모델을 전달하기 전에 매퍼를 삭제하고 매퍼를 다시 부착 할 수 없게하는 플래그를 변경합니다. 이 경우 개체 자체가 영구 계층과 통신 할 수 없지만 연결된 개체는 여전히 영구 계층과 상호 작용할 수 있습니다. – Bryan