0

Zend Framework Forms を使用しているときに Dojo Filtering Selects でいくつかの問題が発生しており、これが私を怒らせているので、見逃しているものを見つけるために助けが必要です。

現在、 firebugでこのエラーが発生しています。

  • dojo.data は未定義です
  • dojo.data.ItemFileReadStore はコンストラクターではありません

以下は、フィルター選択を作成し、json データを呼び出し元のコントローラーに提供するために使用しているコードです。

Zend_Form 要素(Dojo 対応)

$industry = new Zend_Dojo_Form_Element_FilteringSelect('industry');
    $industry->setAutocomplete(true)
    ->setStoreId('industrystore')
    ->setStoreType('dojo.data.ItemFileReadStore')
    ->setStoreParams(array('url' => $baseUrl.'/dojo/industry'))
    ->setAttrib("searchAttr", "title")
    ->setRequired(true)
    ->removeDecorator('DtDdWrapper')
    ->removeDecorator('label')
    ->removeDecorator('HtmlTag');

道場コントローラー

public function industryAction(){

    $db = Zend_Db::factory($this->config->database);

    $result = $db->fetchAll("SELECT * FROM industries");
    $data = new Zend_Dojo_Data('industryid', $result);
    $this->_helper->autoCompleteDojo($data);

    $db->closeConnection();
}

厄介なのは、このフォームの他のすべての Dojo 要素と他のフォームがうまく機能することです。これらの問題が発生するのは、選択のフィルター処理を行うときだけです。この問題により、フォーム内の他のすべての要素も失敗します。

前もって感謝します。

4

1 に答える 1

0

実際の問題は、Zend Framework がツールキットが完全にロードされる前に dijit とデータ ストアを初期化する方法にあります。この場合、具体的にはストアを dijit に割り当てるメソッドです。私もこの問題に遭遇し、問題を回避する最善の方法は、コントローラからビューで定義された JavaScript 変数にデータ ストアを渡すか、特定のオートコンプリート アクションで行ったことを実行することであることがわかりました。あなたの例に基づいて、次の変更を行います。

あなたのフォームでは、要素を単純化します。

$industry = new Zend_Dojo_Form_Element_FilteringSelect('industry');
    $industry->setAutocomplete(true)
    ->setRequired(true)
    ->removeDecorator('DtDdWrapper')
    ->removeDecorator('label')
    ->removeDecorator('HtmlTag');

ビューで、ストアを dijit に接続し、dojo.data.ItemFileReadStore モジュールがロードされていることを確認します。

<?php $this->dojo()->onLoadCaptureStart()?>
    function(){
        dijit.byId('industry').store = new dojo.data.ItemFileReadStore({ url: '/controller/industry' });
    }
<?php 
    $this->dojo()->onLoadCaptureEnd();
    $this->dojo()->requireModule('dojo.data.ItemFileReadStore');
?>

私が言及したように、私はここで答えた同様の問題に遭遇しました。私が発見したもう 1 つの問題は、データ ストアが Zend_Dojo_Data のラベル宣言の「名前」以外で宣言されたラベルの処理を好まないことです。

于 2009-05-21T04:50:41.230 に答える