2010-11-23 8 views
1

管理グリッド用のカスタムウィジェット/グリッド/列を使用してサムネイル画像を表示し、すべてが機能するモジュールを作成しました。今私は同じことをする同じプロジェクトで別のモジュールを作成する必要がありますが、イメージの列は機能しません。新しいクラスをロードしていないように見えます。なぜなら、私はファイルに入れたstmtを実行しないからです。私は適切に読み込むデータを知っている、私はタイプをテキストに変更するとb/c、DBからの正しい情報がフィールドに入力されます。しかし、新しい「イメージ」タイプに変更すると、セルは空になります。なぜ誰もそれが働いていないことを知っていますか?magento書き直しがありません

ABT /背景は、/ etc/config.xmlに < <は

<global> 
    .... 
    <blocks> 
     <background> 
      <class>ABT_Background_Block</class> 
     </background> 
     <adminhtml> 
      <rewrite> 
       <widget_grid_column>ABT_Background_Block_Widget_Grid_Column</widget_grid_column> 
      </rewrite> 
     </adminhtml> 
    </blocks> 
    .... 
</global> 

私は私を取得するためにコピーされ、実行はまったく同じ設定のセットアップを持っているが、まだそれが正常に動作モジュールは動作しません。 ABT /フィーチャーの/ etc/config.xmlに < <これは正しく、私は「

<global> 
    .... 
    <blocks> 
     <feature> 
      <class>ABT_Feature_Block</class> 
     </feature> 
     <adminhtml> 
      <rewrite> 
       <widget_grid_column>ABT_Feature_Block_Widget_Grid_Column</widget_grid_column> 
      </rewrite> 
     </adminhtml> 
    </blocks> 
    .... 
</global> 

答えて

2

ここで、あなたがクラスを書き直すときにMagentoで起こっていることがあります。

Magentoのは、ブロックのクラスをインスタンス化するとき、それはcreateBlock方法は、工場で以下の

$this->getLayout()->createBlock('adminhtml/widget_grid_column') 

ようなコードのものを使用しています。 Magentoは識別子を使用して、どのクラスをインスタンス化するかをルックアップするために識別子を使用します(

adminhtml/widget_grid_column 

)デフォルトでは、それはあなたがあなたのリライトを作成するとき、あなたは

ねえMagentoの

を言っている

Mage_Adminhtml_Block_Widget_Grid_Column 

です。代わりに「adminhtml/widget_grid_column」の「Mage_Adminhtml_Block_Widget_Grid_Column」を使用して、あなたは、これは、任意のシステムのために、クラスだけ一度を書き換えることが可能、ということを意味「ABT_Background_Block_Widget_Grid_Column」

を使用する必要があります。上記のコードでは、クラスを2回書き直そうとしています。あなたの書き換えのうちの1つだけが勝ちます。

私が取るべき速いアプローチは、すべてを1つのオーバーライドクラスでカスタマイズすることです。

もっと一般的には、可能であればリライトを避けるようにしています。彼らは強力なシステムですが、控えめに使うべきです。私は多くのグリッドのカスタマイズはしていませんが、一般的なアプローチはadminhtmlのレイアウトを変更してカスタムモジュールから新しいグリッドクラスをインスタンス化することです。は既存のグリッドクラスを継承しますカスタム列クラス。

多くのことがわかりましたら、このテクニックを何度も繰り返し使用することができますし、書き直しからの矛盾を心配する必要もありません。

+0

これは私がやっていることよりも良いアプローチのように思えます。私が上で言ったように、これは私の最初のmagento付きプロジェクトなので、私はこのすべてに新しいです。あなたはあなたのことをあなたがしていることに沿ってぼろぼろにするのに役立つどんな資源も知っていることはありませんか? – veilig

+0

残念ながら、私はしません。 Magentoについてオンラインで書かれた記事のほとんどはレシピベースです。 "これを実現させるためにこれを行う"、そしてほとんどの人が書き換えメソッドに恋している。あなたの仕事ができるだけ早く完了する必要があるなら、私はあなたが持っていたアプローチを続けますが、ただ一つのオーバーライドクラスメソッドにロジックを追加するだけです。私は自分でお勧めしたアプローチをとるのに十分なシステムを理解するのに役立つ深い記事(プラグイン:http://alanstorm.com/category/magento)を書いてきましたが、必要な学習曲線があります克服すべきである。 –

+0

ああ、私はこれを得るために十分につまずくことができるはずです。あなたの洞察力とウェブサイトのおかげで、私は間違いなくそれを見てみましょう! – veilig

1

の作品あなたのセットアップが正しく行われているかどうかわからない。

とにかく、同じクラスに2つのオーバーライドルールがあるようです。Widget_Grid_Columnロードされた最後のモジュールはABT_Featureであるため、そのブロックのルールはABT_Backgroundモジュールのルールを上書きします。

  1. シングル1
  2. における機能と背景のマージモジュールを背景1に応じて、機能ブロックを作り、ABT_Feature_Block_Widget_Grid_Columnクラスを拡張するように書き換えルールを更新:

    は、次の2つのソリューションを持っていますABT_Background_Block_Widget_Grid_Column

+0

おそらく、このセットアップが正しく行われていない可能性があります。これは私のMagentoで初めての作業で、私はこのガイドに従って新しいタイプの作業をしています。http://www.krishnasunuwar.com.np/2009/07/ecommerce-software-magento-showing-image-in-grid/ – veilig

関連する問題