2010-01-12 5 views
1

하위 클래스 폼에서 상위 폼 요소를 사용하는 방법에 대한 참조를 찾을 수 없습니다. 그것은 나 이외에는 누구에게나 명백하기 때문일 수 있습니다. 그것은 나를 곤란하게 만든다. 이것이 내가 시도한 것이다. 처음에는zend_form 부모 폼 요소에 액세스

은 내 양식 생성자에서 나는

parent::__construct($options = null); 

다음 문제는 모든 부모 폼 요소를 명시 적으로 호출 여부 표시 것이라고했다이

$type = parent::setName($this->type); 

같은 부모 요소에 액세스라는 . 누군가는 "__construct()를 사용하지 말고 대신 init() 함수를 사용합니다. 그래서 생성자를 init()로 변경하고 부모 생성자를 주석 처리 한 다음 양식을 실행했습니다. setName()에 대한 빈 값입니다. 모든 seName() 호출을 주석 처리하고 양식이 실행되었지만 서브 클래 싱 된 양식으로 인스턴스화 된 요소 만 표시했습니다. , 부모 폼 요소를 얻고 사용하는 방법은 무엇입니까?

해결 방법 : 생성자가 init으로 전환되었으므로 부모 호출을 전환해야합니다 .PHP를 가진 사람이 쉽게 사용할 수 있습니다. 하지 않습니다.

사용

parent::init(); 
+0

안녕하세요, Michael, 스택 오버플로에 오신 것을 환영합니다! 다른 사용자가 귀하의 솔루션을보고 올바른 답을 신뢰할 수 있도록 돕기 위해 할 수있는 몇 가지 방법이 있습니다. 게시 된 답변 중 하나가 올바른 경우 해당 답변을 정답으로 선택할 수 있습니다. 그렇지 않은 경우 자신의 솔루션을 대답으로 게시 한 다음 해당 대답을 올바른 것으로 선택할 수 있습니다. 그렇게하면 다른 사람들이 당신의 질문에 답을 얻은 것을 볼 수 있습니다. 질문 제목에 "해결"할 필요가 없습니다. 희망이 도움이; 주위에 당신을보고! – Wesley

+0

감사합니다, Wes. 나는 그 문제를 어떻게 다룰 지 잘 모릅니다. 동시에 다른 사람이 필요로 할 때를 대비해 가능한 빨리 솔루션을 사용할 수 있기를 바랍니다. –

답변

1

해결 : 생성자가 init로 전환되었으므로 부모 호출도 전환해야합니다. php 배경을 가진 누군가를 위해 쉽게. 그렇지 않은 사람에게는 그렇지 않습니다.

사용

parent :: init();

-1

먼저 OOP 원칙을 알아야합니다. 분명히 당신은 그것에 대해 전혀 이해하지 못합니다. 작성한대로 parent :: init()을 Form_Class :: init() 메서드에서 호출해야하지만 이유는 무엇입니까? 그렇지 않으면 부모 메서드가 호출되지 않고 From_Class 메서드에 의해 재정의됩니다.

다른 것은 부모 클래스 "SuperForm"에 입력 및 제출이 있으면 "SuperForm_Subclass"에 동일한 요소가 할당된다는 것입니다. 요소를 액세스하기 위해 "parent :: *"를 사용할 필요가 없습니다 (단지 정적 SuperForm 변수를 사용하여 저장하는 경우에만 예외가 될 것입니다 - 아무 의미가 없습니다).

SuperForm 클래스에서와 마찬가지로 SuperForm_Subclass 내에서 $ this-> inputElement 및 $ this-> submitElement를 쉽게 사용할 수 있습니다.

예제에서 __contruct()를 양호한 것으로 사용할 수 있지만 부모 생성자를 호출하는 것과 동일한 조건으로 사용할 수 있습니다. ...

+2

분명히 당신은 그 용어에 대해 전혀 이해하지 못하기 때문에 정중과 공감을 배워야합니다.당신의 제안 된 해결책은 당신의 오만함에 의해 완전히 가려져 있습니다. 모두가 공식 교육의 젖꼭지에 젖어있는 프로그래밍 영역에 들어 가지는 않습니다. 나는 해결책을 찾는이 공개 토론에 온다. 너가하고 싶은 모두가 너보다 적게 아는 사람들을 모욕하는 것이라면, 지옥을 닫고 너 자신에게 그것을 지켜라. –

+1

프레임 워크가 등장했을 때, 많은 사용자는 어떤 원칙에 대한 지식 없이도 PHP로 작업 할 수 있다고 생각하는 경향이 있습니다. 나는 그 사실에 만족하지 않습니다. 나는 다른 사람들이 프로그래밍 문제를 해결할 수 있도록 상당한 시간을 보냅니다. 나는 누군가를 원하고 싶어한다. 하지만 누군가가 질문을 할 때 지나치게 반응하는 경향이 있습니다. 명백한 것, 일반적인 지식이없고 "큰 일"을하려고하는 것입니다. 나는 내 반응이 어떤 식 으로든 무례하다고 생각하지 않는다. 죄송합니다. 사실, 기초를 먼저 배워야 만 자신의 감정을 상하게 할 수 있습니다. 내 대답을 증오가없는 좋은 충고로 받아들이십시오. –

+1

5 년 후에 이것을보고, 내가 반응 한 방식을 부끄럽게 생각한다고 말해야합니다. 죄송합니다. –

관련 문제