2010-12-05 106 views
0

Zend新手試圖配置和使用Zend_Form。Zend Form實例化在死亡白屏中無聲無息

只爲記錄我在Zend Framework Version:1.11.1上運行Apache 2.something的Win XP。我正在一個大部分工作正常的網站上工作。 (有人啓動它,我必須擴展它)。

我在表單領域遇到了麻煩,我試圖引入Zend_Form,希望這可以簡化事務。但是嘗試使用Zend_Form會導致它自己的問題。

當我嘗試實例化第一個測試表單時,我得到了死亡白屏 - 甚至沒有錯誤信息。

數據如下:

Dir Structure: 
MYAPPNAME 
....controllers 
....forms 
....models 
....services 
....views 

bootstrap.php中包含:

protected function _initAutoLoading() 
{ 
$loader = new Zend_Loader_Autoloader_Resource(array(
'namespace' => 'MYAPPNAME', 
'basePath' => APPLICATION_PATH . '/modules/MYAPPNAME', 
)); 
$loader->addResourceTypes(array(
    'model' => array(
'path' => 'models', 
'namespace' => 'Model'), 
    'form' => array(
'path' => 'forms', 
'namespace' => 'Form'), 
    'service' => array(
'path' => 'services', 
'namespace' => 'Service'))); 
} 

這工作正常模式有相似的名字:

class MYAPPNAME_Model_DataRecordName extends Doctrine_Record 
{ 
etc... 

但它似乎是慘遭失敗對於表單...雖然介意你,這是我第一次使用Zend_Form。

我的表單文件MYAPPNAME /表格/ Formtest.php定義:

<?php 

class MYAPPNAME_Form_Formtest extends Zend_Form 
{ 
public function init($action){ 

    $this->setAction($action) 
    ->setMethod('post') 
    ->setAttrib('id', 'formtestForm'); 

    $email = $this->addElement('text', 'email', 
    array('label', => 'EMail')); 
) 

    $submit = $this->addElement('submit', 'Submit and Be Free!'); 
}// End init 
} // End class def 

的形式被顯示在一個視圖定義爲:

<div class=""testForm"> 
<p style="margin-top:20px; margin-bottom:10px"">Explanatory Text</p> 
<h2>This is a Form Test</h2> 

<?php echo $this->formResponse; ?> 
<?php echo $this->form; ?> 

<hr> 
<p>FORM ABOVE THIS BAR</p> 
</div> 

視圖工作得很好。定義爲

它被通過一個動作(在工作控制器)管理:

public function formtestAction(){ 
    echo "formtestAction: ENTERED"; 

    $form = new MYAPPNAME_Form_Formtest('ThisController/formtest2');  
    //$form = "<p>GARBAGE DATA</p>"; 

    if(!empty($form)){$this->view->form = $form;} 
    else{ 
    $form = "<p>THE FORM VAR IS EMPTY</p>"; 
    $this->view->form = $form; 

    $formResponse = "<p>INSTANTIATION FAILED</p>"; 
    $this->view->formResponse = $formResponse; 
    } 
} 
public function formtest2Action(){ 
    echo "formtest2Action: ENTERED"; 
} 

如果我註釋掉兩者的形式實例化和垃圾數據線,我得到在視圖中有效的輸出。如果我將$ form設置爲「垃圾數據」,我也會得到有效的可預測輸出。

然而,當我嘗試實例化表單對象,我得到只含死亡白屏「formtestAction:已進入」(在頂部的echo語句)

我會慢慢瘋了。

我無法弄清楚這是一個自動加載器問題,路由問題,對象實例化問題還是什麼。

我非常感謝任何建議。

感謝您的閱讀。

+0

你檢查了你的PHP日誌嗎?如果您遇到一些PHP致命錯誤,您很可能最終會出現空白屏幕。此外,致命錯誤不會落入應用程序日誌中(如未捕獲的異常),它們將直接進入PHP日誌。 – Vika 2010-12-06 15:58:03

回答

1

隨着Zends,我遇到了幾次,它通常是一個惱人的作爲一個superflous逗號。在

...'basePath'=> APPLICATION_PATH。 '/模塊/ MYAPPNAME',));

它看起來就像那些。只是快速瀏覽一下,但無論如何你都可以檢查它。

HTH, 馬庫斯

+0

你能接受我的文章作爲答案(對於我們的內部reputationhunt);)關心, – 2010-12-17 13:37:54

0

mtoepper:非常接近。接得好!

確實是一個額外的逗號,只有它在Form類定義中 - 防止成功的對象實例化。

這些沉默失敗是非常煩人的。