2011-04-24 5 views
1

많은 것을 읽은 후에 Zend_Form을 다양한 표현으로 나눌 수 있다는 것을 깨달았습니다.Doctrine 엔티티에서 Zend_Form의 요소 구성하기

Matthew Weier O'Phinney이 제안한 논리에 따라, 나는 App_Form의 경우 Zend_Form을 확장하는 클래스의 생성자에 Doctrine [2] Entitie를 전달하는 아이디어를 얻었습니다.

그래서 내 entitie에, 나는 패턴 다음, 각 양식하는 방법이 있습니다

final public function getForm($form = null) 
: Entitie 양식을 검색하는 방법을 가지고있는 추상 클래스 App_Form_Entitie를 확장

protected function _formFormName{}() 

이고 아직 방법이 있습니다 isValid()getMessage().

Where to place Zend_Forms, Controller? Model? Somewhere else?

내가 가장 좋은 방법은 이들의 궁금하다 :

그러나 많은 사람들이 별도의 파일에서 양식을 떠날 것을 선호 볼 수있는 첫 번째 매개 변수로 폼의 생성자에 개체 전달 , 원하는 양식을 그러한 선택적인 두 번째 매개 변수로 가져 오거나 (마태가 묘사 한대로) 엔티티에서 양식을 가져 와서 원하는 양식의 이름을 첫 번째 매개 변수로 전달하십시오.

답변을 환영합니다. 여기

<?php 
//My controller action 
/* @var $em Doctrine\ORM\EntityManager */ 
$user = $em->find('MyNamespace\User', 1); 
$loginForm = new App_Form($user, array('form'=> 'login')); 
$this->view->loginForm = $loginForm; 

//My view script 
echo $this->loginForm; 

그리고 그 형태는 별도의 파일에있는 매튜의 제안 :

<?php 
//My controller action 
/* @var $em Doctrine\ORM\EntityManager */ 
$user = $em->find('MyNamespace\User', 1); 
$formLogin = $user->getForm('login'); //The entity creates a new instance of the class App_Form_Login and returns it. 
$this->view->formLogin = $formLogin 

//In my view... 
echo $this->formLogin; 
+0

약간의 코드로이 두 가지 옵션을 자세히 설명해 주시겠습니까? – rojoca

+0

@rojoca 예제를 추가했습니다. – JCM

답변

3
여기

는이 개 두 예제 먼저 될 방법을 보여주는 코드, 내 제안이다

User 개체가 App_Form 개체를 만드는 것이 옳지 않은 것 같습니다. 엔티티는 응용 프로그램의 다른 부분에서 참조하는 데이터의 이상적인 추상화입니다. 그렇다고해서 폼 유형에 대해 별도의 파일을 가질 수 있습니다. 귀하의 첫 번째 옵션과 같은 것을 찾아 보겠습니다.

<?php 
//My controller action 
/* @var $em Doctrine\ORM\EntityManager */ 
$user = $em->find('MyNamespace\User', 1); 
$loginForm = new App_Form_Login($user); 
$this->view->loginForm = $loginForm; 

//My view script 
echo $this->loginForm 
+0

자, 예를 들어, 내 Entitie에서 폼에 대한 정보를 포함하는 배열을 반환하는 보호 된 메서드 _formLogin()이 있습니다.이 경우 폼 자체의 개체를 만들지 않으므로 올바른 사용법입니다. 그것을 창조하는 데 필요한 자료가 있어야한다. 권리? – JCM

+0

방법은 공개 여야합니다. 그렇지 않으면 어떻게 접근 할 수 있습니까? 나는 그런 방법이 필요하다는 것을 확신하지 못합니다. 'App_Form_Login'에서 값을 얻거나 설정할 수있는'User' 객체에 접근 할 수 있습니다. 'User'에서 무엇이 더 필요할까요? – rojoca

+0

양식을 설명하기 위해 User 엔터티를 얻으려고 시도하는 이유는 무엇입니까? – Cobby