2011-11-14 53 views
2

我想將列添加到管理員客戶電網is_onHold(有一個名爲is_onHold在customer_entity表列,TINYINT(1){想存儲布爾值}) 。致命錯誤:Magento的添加列管理員客戶電網

我試過Fabrizio d解決方案:Magento - Add column to customer grid,但是,當嘗試根據添加的列過濾結果時,會發生致命錯誤。

我加入以下在_prepareColumns)代碼(

$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下面的代碼()

->addAttributeToSelect('is_onHold') 

它完美,並且列被添加到網格,但是當我嘗試根據新添加的列過濾記錄時,出現錯誤 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爲好,還是同樣的錯誤......我100 %確定我沒有拼錯它,因爲,我已經檢查過它,兩次,三次,我不知道有多少次... – 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中列由我添加...

希望這會幫助別人......