0

Zend の初心者が Zend_Form を構成して使用しようとしています。

記録のために、私は Zend Framework Version: 1.11.1 on Win XP running 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 を使用する私の最初のパスです。

私のフォームはファイル MYAPPNAME/forms/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 を "GARBAGE DATA" に設定すると、有効な予測可能な出力も得られます。

ただし、フォームオブジェクトをインスタンス化しようとすると、「formtestAction: ENTERED」のみを含む白い画面が表示されます (上部の echo ステートメントから)。

ゆっくりと狂っていきます。

これがオートローダーの問題なのか、ルーティングの問題なのか、オブジェクトのインスタンス化の問題なのか、それとも何なのかわかりません。

アドバイスをいただければ幸いです。

読んでくれてありがとう。

4

2 に答える 2

1

Zends の場合、私はこれに何度か遭遇しましたが、通常は不要なコンマとして煩わしいものです。の

... 'basePath' => APPLICATION_PATH . '/modules/MYAPPNAME',));

それらのように見えます。ざっと見るだけですが、とにかくチェックしてください。

HTH、マーカス

于 2010-12-10T17:36:44.167 に答える
0

mtoepper: とても近いです。よく釣れます!

それは確かに余分なカンマでした. Form クラス定義にあっただけで、オブジェクトのインスタンス化の成功を妨げていました.

これらの静かな失敗は非常に厄介です。

于 2010-12-10T20:20:59.340 に答える