関連製品と同様の機能を備えたタブを追加しました。次のようなドロップダウンを備えた列を追加しました。
$this->addColumn('mycolumn', array(
'name' => 'mycolumn',
'header' => Mage::helper('catalog')->__('Display on current child page'),
'index' => 'mycolumn',
'type' => 'select',
'width' => '1',
'align' => 'center',
'options' => array(
1 => Mage::helper('catalog')->__('Yes'),
0 => Mage::helper('catalog')->__('No'),
),
'editable' => true
));
選択を変更するたびに、製品のチェックが外され、行が無効になります。
この行がmagentoでコメントされていることがわかりました。
bindFieldsChange : function(){
if (!$(this.containerId)) {
return;
}
---> // var dataElements = $(this.containerId+this.tableSufix).down('.data tbody').select('input', 'select');
var dataElements = $(this.containerId+this.tableSufix).down('tbody').select('input', 'select');
for(var i=0; i<dataElements.length;i++){
Event.observe(dataElements[i], 'change', dataElements[i].setHasChanges.bind(dataElements[i]));
}
}
このコードはjs/mage / adminhtml/grid.jsで見つかりました。この行のコメントを外すと、ドロップダウンが魅力のように機能しました...
この問題に関して2つの質問があります。最初の質問は、これをコメント解除しても安全かどうかです(Magentoにはこれを変更する理由があったに違いありません)。
2番目の質問は、grid.jsファイルを調整せずにこの動作を回避する方法です。コアファイルの編集は嫌いですが、この機能を書き直す方法や、動作が適用されない方法で列を追加する方法を理解できません。