2011-10-26 3 views
3

내가 좋아하는 뭔가를하려고하면Zend-Framework가없는 Zend-form MVC - viewscript는 요소를 표시하지 않지만 존재하지만 var_dump()에 의해 표시됩니다.

 <?=$this->element->mailCiteCheck?> 

아무것도 표시되지 않습니다. 내가 할 때

의 의

그러나 :

<?=var_dump($this->element->mailCiteCheck);?> 

를 내가 얻을 :

object(Zend_Form_Element_Checkbox)#118 (33) { 
    ["checked"]=> 
    bool(false) 
    ["helper"]=> 
    string(12) "formCheckbox" 
    ["options"]=> 
    array(2) { 
    ["checkedValue"]=> 
    string(1) "1" 
    ["uncheckedValue"]=> 

등등 ... 그래서 어떻게이 양식의 요소를 표시 할 수 있습니까?

내가

<?=$this->element->mailCiteCheck;die();?> 

나는이 경고를 얻을 수행 할 때

ViewHelper 장식 등록 된 뷰 객체없이 렌더링 할 수 없습니다를

+1

좋아, 문제가 해결, 내가 한 일이라고 생각했지만 setView 메소드를 덮어 쓰지 않았다. – rukya

답변

3

대답은 모든 양식 요소로보기를 설정했다 :

$view = new Zend_View(); 
    $view->addScriptPath(APPLICATION_FORM_SCRIPT_PATH); 
    $view->addBasePath(APPLICATION_SCRIPT_PATH); 
    $replyForm = new Form_MailReply(); 
    $replyForm->setView($view); 
    foreach ($replyForm as $item){ 
     $item->setView($view); 
    } 
    $replyForm->render($view); 
3

Zend_Form이 Zend_View에 따라 등록 된 뷰 객체없이 렌더링 할 수 없습니다 : 나는

<?=$this->element->mailCiteCheck;die();?> 

을 수행 할 때

와 나는이 경고를 얻을. 또한 Zend_View 클래스를 사용해야 작동합니다.

이 주제에 대한 내용은 here입니다.

을 달성하는 방법을 취할 예 :

$view = new Zend_View(); 
$form = new My_Form(); 

echo $form->render($view); 
4

@Hikaru 의해 제공 the link에서 언급 한 바와 같이 기본적으로

, Zend_Form 및 Zend_Form_Element는 초기화 뷰 객체를 사용하려고 시도 ViewRenderer

따라서 양식의 render() 메소드 또는 man을 재정의하는 대신 부를 따로 $form->setView($view) 호출, 다른 방법은 아마도 부트 스트랩 중에 ViewRenderer로보기를 설정하는 것입니다 :

Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->view = $view; 
+0

이것은 ZF의 컨트롤러 구성 요소가 사용될 경우에만 가능하다. 이 구성 요소는 OP가 사용하지 않는 ZF의 MVC 구현의 일부입니다. –

+0

@ Hikaru-Shindo : D' oh! 그것은 아주 좋은 지적입니다. 나는 OP 질문의 그 부분을 놓쳤다. ;-) 전체 ZF MVC 스택없이'Zend_Form'을 사용했다면 위에 정적 호출을 할 수 있다는 점에 유의할 것입니다. 내부적으로는 ViewRenderer 인스턴스를 생성하고 뷰를 할당합니다. 모든 것을 훨씬 쉽게 만들어 주었고 폼이'ViewRenderer'에서 멀리 숨어있는 뷰를 사용하는 것으로 돌아갔습니다. 그러나 대부분의 경우와 마찬가지로 YMMV. ;-) –