2010-12-05 4 views
0

Zend_Formを設定して使用しようとしています。Zendは死の白い画面で黙って失敗するインスタンスを作成します

私はZend Frameworkバージョン1.11.1のWin XPでApache 2.somethingを実行しています。私は、ほとんどの部分がうまく動作するサイトで作業しています。 (他の誰かがそれを始めました。私はそれを拡張する必要があります)。

私はフォームの領域で問題を抱えており、何とか問題を単純化することを期待して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を使用する私の最初のパスです。

私のフォームはFormtest.php /ファイルもしmyAppName /フォームで定義されています。ビューは

<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> 

だけで正常に動作:

<?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 

形式は以下のように定義されたビューに表示されています。

それは以下のように定義(作業コントローラに)作用によって管理されている:私は、フォームのインスタンス化とゴミデータラインの両方をコメントアウトした場合、私はビューで有効な出力を得る

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を "GARBAGE DATA"に設定すると、予測可能な出力も得られます。私は、フォームオブジェクトをインスタンス化しようとすると、

は、しかし、私は唯一の「formtestAction:入力した」を含む死の白い画面を取得します(。上部のecho文から)

私はゆっくりと怒っつもりです。

これはオートローダーの問題、ルーティングの問題、オブジェクトのインスタンス化の問題、または何かを理解できません。

私は何かアドバイスをお願いします。

読んでいただきありがとうございます。

+0

PHPログを確認しましたか? PHPの致命的なエラーが発生した場合は、空白の画面が表示される可能性が非常に高いです。さらに、致命的なエラーはアプリケーションログに記録されません(キャッチされない例外のように)、PHPログに直接行きます。 – Vika

答えて

1

Zendsでは、私はこれを数回実行しました。通常、これは超濁コンマとして迷惑なものです。 In

... 'basePath' => APPLICATION_PATH。 '/ modules/MYAPPNAME'、));

それはそれらのように見えます。とにかく簡単に見えるかもしれませんが、あなたはそれをチェックするかもしれません。

HTH、 マーカス

+0

あなたは私の内部の評判のための答えとして私のポストを受け入れることができます;)、 –

0

mtoepper:非常に近いです。いいキャッチ!

これは本当に余分なカンマでしたが、フォームクラス定義にのみ含まれていました。オブジェクトのインスタンス化が正常に行われませんでした。

これらのサイレントエラーは非常に厄介です。

関連する問題