2011-11-14 8 views
2

管理カスタマー・グリッドに列を追加Magentoのis_onHold(is_onHoldという名前customer_entity表の列があり、(1){boolean値を格納したい} tinyint型) 。致命的なエラー:私は管理カスタマー・グリッドに列を追加したい

私はFabrizio dの解決策を試しましたが、Magento - Add column to customer gridから解決策を試みましたが、追加された列に基づいて結果をフィルタリングしようとすると致命的なエラーが発生します。

Iは_prepareColumns()に次のコードを追加しました:これは完璧に動作し、列がグリッドに追加さ

->addAttributeToSelect('is_onHold') 

$this->addColumn('is_onHold', array(
      'header' => Mage::helper('customer')->__('On Hold?'), 
      'width'  => '150', 
      'index'  => 'is_onHold', 
      'type'  => 'options', 
      'options' => array(
       1 => 'Yes', 
       0 => 'No', 
     ) 
     )); 

_prepareCollection()内のコードを以下のようにしかし、新しく追加された列に基づいてレコードをフィルタリングしようとすると、エラーが発生します。 Mage EAV Error

私は、対応するエラーレポートをチェックすると、それは言う:私はブール列のタイプのオプションを使用しようとしていますので、

a:5:{i:0;s:34:"Invalid attribute name: is_onHold.";i:1;s:5418:"#0 E:\wamp\www\magePrj\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(1166): Mage::exception('Mage_Eav', 'Invalid attribu...') 
1 E:\wamp\www\magePrj\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(1255): Mage_Eav_Model_Entity_Collection_Abstract->_addAttributeJoin('is_onHold', 'inner') 
2 E:\wamp\www\magePrj\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(292): Mage_Eav_Model_Entity_Collection_Abstract->_getAttributeConditionSql('is_onHold', Array, 'inner') 
3 E:\wamp\www\magePrj\app\code\core\Mage\Eav\Model\Entity\Collection\Abstract.php(312): Mage_Eav_Model_Entity_Collection_Abstract->addAttributeToFilter('is_onHold', Array) 
4 E:\wamp\www\magePrj\app\code\core\Mage\Adminhtml\Block\Widget\Grid.php(449): Mage_Eav_Model_Entity_Collection_Abstract->addFieldToFilter('is_onHold', Array) 

は、このですか? 私は何が間違っているのかよくわかりません...

+0

が、私は同じエラーそれでも、同様のカラム型ENUMを変更しようとしたのに役立ちます

が希望していますされています私がそれをチェックしたので、間違っていないことを確かめてください。何度か何回かわかりません... – Ravish

答えて

6

私が直面している問題の解決策を見つけました。 時間をかけて頭を壁に叩いた後。

実際には、列にデータ型を使用しても問題はありませんでした。だから、問題はテーブルにはなかった。

すべての関連ファイルを確認しました。最後に、問題がどこにあるのかが分かりました。 実は、私がいた右まで:

$this->addColumn('is_onHold', array(
     'header' => Mage::helper('customer')->__('On Hold?'), 
     'width' => '120', 
     'index' => 'is_onHold', 
     'type' => 'options', 
     'options' => array('1' => 'Yes', '0' => 'No') 
)); 

->addAttributeToSelect('is_onHold') 

しかし、私はあなたが上記の方法を使用する場合、あなたはMage_Customer_Model_Entity_Customerに一つの追加の変更を加える必要があると思う - > _ getDefaultAttributes()とそこにあなたの列...

私が行ったように:

return array(
      'entity_type_id', 
      'attribute_set_id', 
      'created_at', 
      'updated_at', 
      'increment_id', 
      'store_id', 
      'website_id', 
      'is_onHold', 
      'hold_till' 
     ); 

配列の最後の2が...私は100、私が追加した列...これは誰か...

関連する問題