2010-07-29 3 views
0

젠드 (Zend)를 사용하는 웹 애플리케이션에서 기본 양식과 뷰를 제공하고 싶습니다. 우리는 클라이언트가 기본 양식을 대체 할 수있는 다른 디렉토리에 배치 할 수있는 사용자 정의 양식 및/또는보기를 작성할 수 있기를 바랍니다. IE에서 Zend는 사용자 정의 양식 (또는 뷰)이 있는지 확인한 후이를로드하고 그렇지 않으면 기본값을로드합니다.Zend를 사용하여 양식 및/또는보기를 동적으로 재정의하는 방법은 무엇입니까?

젠드를 사용하여이 작업을 수행 할 수 있습니까?

기본적으로 부모 생성자를 호출하는 모든 양식의 하위 클래스를 만드는 방법에 대해 이미 생각했지만 해킹 비트처럼 보입니다.

+0

클라이언트가 새 양식을 만들면 필드가 데이터베이스에 저장됩니까? –

+0

DB에 이미 존재하는 필드로 제한하려고합니다. 클라이언트의 기술적이지 않은 특성을 감안할 때 실제로 양식을 생성 할 가능성이 큽니다. 업그레이드를 위해 양식을 분리하여 작성하는 것이 좋습니다. 맞춤 양식과 별개의 기본 양식이있는 경우 기본 양식을 최신 상태로 유지하면서 기능을 다시 사용할 수 있습니다. – pfyon

+0

그리고 클라이언트가 양식을 어떻게 바꿀 것인가? 관리 영역에서? IE "목록에서 원하는 양식을 선택하십시오. –

답변

3

사용자 정의 및 기본 접두사/경로로 구성된 작업/서비스 클래스는 어떻습니까? 요청한 양식을 인스턴스화합니다. 먼저이 사용자 정의 양식의 존재 여부를 확인하고 기본 양식으로 폴백하는 것이이 팩토리 클래스의 작업입니다.

따라서 My_Form_Default_User이라는 이름의 기본 양식을 application/forms/default에 표시하고이라는 기본 양식을 application/forms/custom으로 표시 할 수 있습니다. 그런 다음 클라이언트 코드는 My_FormFactory::createForm('user')과 같은 것을 호출 할 수 있습니다.

두 가지 경우 모두 폼의 이름을 동일하게 지정하고 (예 : My_Form_User) 두 위치에 대한 경로로 오토로더를 구성 할 수 있습니다. 오토로더가 사용자 정의 양식을 찾으면 차갑게하십시오. 그렇지 않은 경우 기본 위치로 되돌아갑니다. 하지만 그 접근 방식은 나에게 조금 더 멋지게 보인다.

+0

공장 이데아는 훌륭한 이름 컨벤션과 함께 훌륭하다고 생각합니다. 사용자는 단순히 디렉토리에 폼을 넣을 수 있으며 factory 클래스는로드 할 것입니다. –

+0

필자가 설명하는 것처럼 오토로더를 사용하고 싶었지만 꽤 복잡한 짐승이었고 기본 zend stuff 전에 리소스를로드하는 방법을 알지 못했습니다. 나는 그것에 대해 별도의 질문을 할 것이라고 생각한다. 편집 : http://stackoverflow.com/questions/3373891/how-to-configure-the-zend-autoloader-to-load-a-custom-path-for-resources-before-t – pfyon

1

어때?

view를 렌더링하기 전에 읽을 application.ini 섹션을 준비하십시오. 기본 설정은 컨트롤러에 사용자의 양식을로드해야 함을 나타내지 만 클라이언트가 지정된보기에 대해 자체 양식을로드하려는 경우 application.ini에서 해당 항목을 단순히 삭제할 수 있습니다 (사용자 정의 양식을 제공해야 할 수도 있습니다. 클라이언트가 사용자 정의 할 수 있지만 자신의 응용 프로그램에서 사용하는 application.ini와 다른 application.ini)

관련 문제