2012-03-28 57 views
0

我想開始使用Zend框架,跟隨快速啓動項目,並試圖啓動我自己的新模塊。 想實現視圖助手和我不斷收到以下消息: 消息:方法formDate不存在Zend框架視圖助手 - 如何讓它工作

堆棧跟蹤最後條目:

0 d:\工作\ quickstart_zend \程序\意見\腳本\ USERS \ register.phtml(38):Zend_Form_Element的 - > __通話( 'formDate',陣列)

我有以下文件結構:

 

    quickstart_zend 
    + application 
     + configs 
     + controllers 
     [...] 
     + views 
      + helpers 
      + scripts 

    [...] 
    + library 
     + Application 
      + Form 
      + Element 
       Date.php 
      + View 
      + Helper 
       FormDate.php 
    + public 

我在公共/ bootstrap.php中添加這種方法:

 


    protected function _initActionHelpers() 
     { 
      Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH.'/../library/Application/View/Helper', 'Application_View_Helper'); 
      Zend_Controller_Action_HelperBroker::addPrefix('Application_View_Helper'); 
     } 

我也加入我的application.ini:

 

    autoloaderNamespaces[] = "Application" 
    resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/../library/Application/View/Helper/" 

我看見了一個版本,也試圖與resources.view.helperPath.Application_View_Helper_,似乎沒有任何得到它的工作。

當然,我有其中i創建一個 '日期' 元件的Users.php形式:

 

    // Add a dateOfBirth element 
    $element = new Application_Form_Element_Date('dateOfBirth'); 
    $this->addElement($element); 

當然,我有其中i創建一個 '日期' 元件的Users.php形式:

 

    // Add a dateOfBirth element 
    $element = new Application_Form_Element_Date('dateOfBirth'); 
    $this->addElement($element); 

在我看來,劇本,其中錯誤顯示出來:

 

    <? echo $form->dateOfBirth->formDate() ?> 

我缺少的是得到它的工作? :-(我已經花了一天的時間尋找解決方案

+0

要調用視圖助手,你應該調用方法對視圖('$ instanceOfZendView-> formDate()'),但是你在'Zend_Form_Element_Date'上調用它。所以不要這樣。 – bububaba 2012-03-28 11:45:49

+0

謝謝,我現在明白了,就是這樣! – devplayer 2012-04-04 15:15:30

回答

0

正確使用您的視圖助手上的數據你會使用它想:

在您的視圖(一個.phtml)

//a view helper should act on a piece of data and return something 
//so I assume your formDate() helper takes a date value and reformats it. 
<?php echo $this->formDate($this->form->dateOfBirth) ?> 

假設你使用標準分配的形式向視圖控制器:

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

是的,你很接近,但實際上真正的原因是formDate動作必須在而不是在formElement上。我現在明白了其實最接近的是bububaba的評論 – devplayer 2012-04-04 15:15:02

+0

這就是我想說的,我編輯的時候更加清楚。 – RockyFord 2012-04-05 08:32:06

1

你正在接收這個錯誤,因爲在Zend_Form_Element中沒有這樣的方法我想你試圖用你的視圖幫助器以某種方式顯示這個表單元素,但如果是這樣,最好是使用表單裝飾可以使用標準的裝飾,也可以創建一個自定義檢查文檔的詳細信息的情況下 - 。http://framework.zend.com/manual/en/zend.form.decorators.html

+0

是的,我正在嘗試使用視圖助手,而我正在ZF的學習過程中這樣做。我已經通過了裝飾者課程,並且我剛剛在我的表格中找到了一個我想在我的表格中使用的示例 – devplayer 2012-04-04 14:02:56