2010-12-29 7 views
0

보기 도우미에서 Zend_Form을로드 할 수 있습니까? 로그인 액션 메소드에서이 폼을 사용하고 있습니다. 그러나이 양식을 모든 페이지의 탐색에 표시하려면 (로그인 작업을 실제로 호출하지 않고) 양식의 post 메소드가 로그인 조치 메소드로 전송됩니다.Zend의보기 도우미에서 Zend_Form을로드 하시겠습니까?

저는보기 도우미와 함께해야한다고 생각하지만 어떻게 보이지 않습니다.

아이디어가 있으십니까? 내보기 도우미 :

나는이 함께 노력

class Zend_View_Helper_LoginForm 
{ 
    function getLoginForm(){ 
    $form = new Form_LoginForm(); 
    return $form; 
    } 
} 

와 나는 같은 내 레이아웃에서 호출 : <?php echo $this->form(); ?>을하지만이 작동하지 않습니다. (그래도 난 액션 메소드를 통해 동일한 형태를 호출 할 수있어!)이 경우

가 나에게 (내 도우미는 9 라인 길기 때문에 이해가되지 않습니다)이 오류 제공 :

Warning: Missing argument 1 for Zend_View_Helper_Form::form() in C:\xampplite\htdocs\zendpr\library\Zend\View\Helper\Form.php on line 44

답변

3

로보기 도우미해야 Zend_View_Helper_Abstract 클래스와 뷰 도우미의 방법은 클래스와 같은 이름을 가지고 있어야합니다 확장 :

class Zend_View_Helper_LoginForm extends Zend_View_Helper_Abstract 
{ 
    function loginForm() { 
     $form = new Form_LoginForm(); 
     return $form; 
    } 
} 

당신은 당신의보기 스크립트에서 다음과 같이 호출 :

echo $this->loginForm(); 

당신은 호출하는 경우 : 당신은

+0

나를 때려 눕히세요. ;-) –

0

은 View_Helper 양식 참조를 Zend_View_Helper_Abstract을 확장하고 setView()

class Zend_View_Helper_XX extends Zend_View_Helper_Abstract { 

    public $view; 

    public function setView(Zend_View_Interface $view) 
    { 
     $this->view = $view; 
    } 

컨트롤러의 행동 양식을 초기화한다을 무시하고 설정 되세요

// controller action code 
$this->view->form = $form; 

그런 다음 뷰 도우미에서 당신은 뷰를 통해 양식을 참조 할 수 있습니다

// view helper code 
$this->view->form; 
+0

, 나는 싶지 않아이어야한다 제거 이 양식은 모든 페이지에서 볼 수 있어야하고 모든 작업 방법에서 초기화해야하므로 내 작업 메서드에서 양식을 초기화하십시오. 그렇기 때문에 액션 헬퍼를 사용하여 레이아웃 파일에서 불러오고 싶습니다 ... – networkprofile

0
class Zend_View_Helper_LoginForm extents Zend_Form { 

    function getLoginForm(){ 

     $form = new Form_LoginForm();  

     return $form; 
    } 
} 

또는

$this->view->form=$form;

은 모두 양식을 반환하려고하는보기 도우미 Zend_View_Helper_Form을 사용하는

echo $this->form(); 

. 보기 양식은보기에 더 구체적입니다.

echo $this->form();

이 질문에 대답하기 위해 당신의 PHTML보기 파일에이 추가 - 괄호

는 것입니다 echo $this->form;

관련 문제