2012-02-10 5 views
0

私は初心者ですが、このエラーを取得:
- 致命的なエラー:Cには見られないクラスのForm_UploadBom ':\ WAMP \ NetBeansProjects \ bomSlaveアプリケーション\コントローラ\ライン上の\ BomController.php
私は何が欠けていますか?
私は何が間違っていますか?Zend Framework:Form_MyFormが見つからない...これはBOOTSTRAPの問題ですか?

私がフォームのインスタンスを呼び出す場所は、のBomController.phpの18行目です。

17. public function uploadAction() { 
18.  $form = new Form_UploadBom(); 
19.  $this->view->form = $form; 
20. } 

私のフォームは//application/forms/uploadbom.phtml

class Form_UploadBom extends Zend_Form { 
    public function __construct($option = null) { 
     parent::__construct($option); 

     $this->setName('bomupload'); 

     $company = new Zend_Form_Element_Text('co'); 
     $company->setLabel('Cust Company:') 
       ->setRequired(); 

     $contact = new Zend_Form_Element_Text('contact'); 
     $contact->setLabel('Cust Contact') 
       ->setRequired(); 

     $file = new Zend_Form_Element_File('bom'); 
     $file->setLabel('BOM File (in CSV):') 
       ->setRequired(); 

     $submit = new Zend_Form_Element_Submit('submit'); 
     $submit->setLabel('Uplaod BOM'); 

     $this->addElements(array( $company, $contact, $file, $submit )); 
     $this->setMethod('post'); 
     $this->setAction(''); 
    } 
} 

にあり、ここ

protected function _initAutoLoad(){ 
    $autoloader = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH, 
     'resourceTypes' => array (
      'model' => array(
       'path' => 'models/', 
       'namespace' => 'Model_', 
       ), 
      'form' => array(
       'path' => 'forms/', 
       'namespace' => 'Form_', 
       ) 
      ) 
     ) 
    );  
    return $autoloader; 
} 

再び私ブートストラップファイルから自動ローダーをだ、何私は行方不明ですか?
私は何が間違っていますか?
(とはそれだけで恥ずかしいだろう:)

〜のMo ...それがどこかにちょうどタイプ-O ...
だ私に教えないでください

[[編集]]
ファイル拡張子をphtmlからphpに変更した後、そのエラーはなくなりました...しかし...今、ビューヘルパーに関するエラーが発生しました。
- 警告:Zend_View_Helper_Formため欠落引数1 ::フォーム()....
そして、この通知:
- 注意:*未定義の変数:Cでの名前:WAMPの\ビン\ PHPの\のZendFramework \ \ 1.11.11 \ library \ Zend \ View \ Helper \ Form.php on line 46

どのようにすべてのものが再生されますか?
[/ EDIT]

+0

通常、フォームに要素を追加するコードは、コンストラクタではなく、フォームの 'init()'メソッドにあります。あなたのコンストラクタが親コンストラクタを呼び出すが、とにかく試してみる価値があるので、重要ではない。 –

答えて

1

Well, after changing the file extension from phtml to php, that error is gone ... but ... I now have an error about view helpers. - Warning: Missing argument 1 for Zend_View_Helper_Form::form() .... And this notice: - Notice:* Undefined variable: name in C:\wamp\bin\php\ZendFramework\1.11.11\library\Zend\View\Helper\Form.php on line 46

How does all that come into play ??

この問題に影響する可能性のあるいくつかの問題に気付きました。

  1. Zend_Form_Element_Fileは、フォームのエンコーディングがあることを要求:

    $form->setAttrib('enctype', 'multipart/form-data');

  2. Zend_Form_Element_Fileは、目的地を必要とするが、デフォルトではFalseです
    $element->setDestination('/var/www/upload');

  3. ->setRequired()を設定し、私はあなたが必要とするかなり確信しています要素を必要とするためには、実際にはそれをtrueとフラグを立てる必要があります。 Zend_Formのを拡張する形の$element->setRquired('TRUE');

  4. 一般的な使用方法、__construct()でそれを行うことは技術的に間違っていないinit()方法、フォームを構築することです。 Zend_Formは、この目的のために特別にinit()を設定しているだけです。

3番と4番はあなたのビューヘルパーの問題とは関係ありません.1番と2番はそうです。また

観察...
あなたはZFの現在のバージョン(1.11)を使用している場合はフォームやモデルがデフォルトルートを持っていて、実際にそれらを変更していないとして、あなたのブートストラップであなたの_initAutoload()が大きく不要です。
デフォルトルートを使用するために必要な変更は、appNamespaceがクラス名の最初の単語であることを確認することだけです。通常のデフォルト使用では、「Application」... Form_UploadBom()となるので、Application_Form_UploadBom()になります。
私は、これを完全に情報に基づいて目的に沿って行っている可能性があり、最新の本またはチュートリアルに従っているだけではないことを認識しています。その場合は...コードon :)

+0

非常に役に立ちます。あなたの "観察も..."を含む。包括的な詳細をありがとう。穏やかな言葉遣いをありがとう。すべてのカウントで、ありがとう! – mOrloff

1

Zend_Application_Module_Autoloaderパスapplication/forms/UploadBom.phpでフォームForm_UploadBomを見つけるため/_置き換えます。

/application/forms/UploadBom.php 

変更フォームのファイル名、ファイルの拡張子.phtmlは、専用のビューに関連するもののために使用されます。

+0

ありがとう..拡張子の名前を変更するのは、私が最初にやったステップでした。 大きな違いがありましたが、今はViewヘルパーについて別のエラーがあります。ビューヘルパーについて話しているのはなぜですか?私はどのように私は混乱にロープされて表示されません。 ((OPへの編集を参照してください。そこにアップデートを投稿します)) – mOrloff

関連する問題