2011-07-13 10 views
2

私は同様の質問をしましたが、十分な詳細を提供していませんでした。grid.phpファイルのグリッド選択に追加

主なタスクは、magento admin sales->請求書の下にエクスポートされるCSVファイルにフィールドを追加することです。

app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php 

これはそうのようなAddColumn関数年代にオプションがあります:私は編集することがメインのファイルを見つけた私は、適切なデータベースフィールドにインデックスを変更するには、新しい列のを追加しようとすると、今

を、することができます例えば「税額」と言ってください。唯一の問題は、この新しい値がMagentoコレクションにないことです。そのため、テーブルの空の列に値を設定するだけです。

Magentoの新機能は、Magentoコレクションの仕組みやgrid.phpの範囲でのアクセス方法を完全に理解できていません。誰かが私のコレクションに追加する方法のいくつかの方向を教えてくださいでしたか?

私は本当に立ち往生しており、助けに感謝します。

答えて

4

基本的には、含めるフィールドを組み込むようにリソース・モデルを編集する必要があります。あなたは

$collection = Mage::getResourceModel('sales/order_invoice_collection') 
->addAttributeToSelect('order_id') 
->addAttributeToSelect('increment_id') 
->addAttributeToSelect('created_at') 
->addAttributeToSelect('state') 
->addAttributeToSelect('grand_total') ...and so on! 

行を追加し、私はあなたの使ってますがGrid.phpにあなたは_prepareCollectionのようなコードを見つけることがわかりますファイルどのバージョンわからないんだけど、コード内でリソースを編集することができます

そのリストに
->addAttributeToSelect('tax_amount') 

、あなたはこれは私が離れて私のdevのマシンからだと手に魔道士を持っていけないほど未テストですが、これは仕事や最低限の時点でなければならない

$this->addColumn('tax_amount', array(
    'header' => Mage::helper('sales')->__('Tax'), 
    'index'  => 'tax_amount', 
    'type'  => 'number', 
)); 

を使用することができるはずですあなたはあなたの視線方向。

編集:

失敗あなたはあなたの全体の_prepareCollection交換してみことができることを

protected function _prepareCollection() 
{ 

$collection = Mage::getResourceModel('sales/order_invoice_collection') 
->addAttributeToSelect('order_id') 
->addAttributeToSelect('increment_id') 
->addAttributeToSelect('created_at') 
->addAttributeToSelect('state') 
->addAttributeToSelect('grand_total') 
->addAttributeToSelect('tax_amount') 
->addAttributeToSelect('order_currency_code') 
->joinAttribute('billing_firstname', 'order_address/firstname', 'billing_address_id', null, 'left') 
->joinAttribute('billing_lastname', 'order_address/lastname', 'billing_address_id', null, 'left') 
->joinAttribute('order_increment_id', 'order/increment_id', 'order_id', null, 'left') 
->joinAttribute('order_created_at', 'order/created_at', 'order_id', null, 'left'); 

$this->setCollection($collection); 
return parent::_prepareCollection(); 
} 

ここでも、これは、メモリから、これはとてもその少し古いのMagentoの1.3範囲から_prepareCollectionは、テストされていないですが、それがうまくいくはずです。

+0

私はaddAttributeToSelectを試しました。私の開発サイトがクラッシュするので、エラーが発生します。私の$コレクション変数はあなたとは少し異なります。私のものは '$ collection = Mage :: getResourceModel($ this - > _ getCollectionClass());'のようになります。アイデア? –

+0

あなたはどのMagentoのバージョンを使用していますか? _prepareCollection全体を別のものに置き換えることもできます。上記の答えを参照してください。 –

+0

Magento 1.9を使用しています。うん、それを置き換えて、そのトリックをした。私は以前からコレクションを入手していた場所を理解したいと思いますが、今のところこれが機能します。ありがとう! –

関連する問題