Rav*_*ish 3 magento magento-1.5
我想在Admin Customer Grid is_onHold中添加一列(customer_entity表中的列名为is_onHold,tinyint(1){想要存储布尔值}).
我尝试了Fabrizio d解决方案:Magento - 将列添加到客户网格,但是,当尝试根据添加的列过滤结果时,它会给出致命错误.
我在_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',
)
));
Run Code Online (Sandbox Code Playgroud)
以及_prepareCollection()中的以下代码:
->addAttributeToSelect('is_onHold')
Run Code Online (Sandbox Code Playgroud)
它工作得很好,并且列被添加到网格中,但是,当我尝试根据新添加的列过滤记录时,我收到错误

当我检查相应的错误报告时,它说:
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)
Run Code Online (Sandbox Code Playgroud)
这是因为我试图为布尔列使用类型选项吗?我不确定我做错了什么......
我找到了解决我遇到的问题的方法.把头撞到墙上好几个小时后.
实际上,对列使用任何数据类型都没有错.所以,问题不在表中.
我检查了所有相关文件.最后,找到了问题所在.实际上,我是对的,直到:
$this->addColumn('is_onHold', array(
'header' => Mage::helper('customer')->__('On Hold?'),
'width' => '120',
'index' => 'is_onHold',
'type' => 'options',
'options' => array('1' => 'Yes', '0' => 'No')
));
Run Code Online (Sandbox Code Playgroud)
和
->addAttributeToSelect('is_onHold')
Run Code Online (Sandbox Code Playgroud)
但是,我认为当你使用上面的方法时,你需要对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'
);
Run Code Online (Sandbox Code Playgroud)
数组中的最后2个是我添加的列...
希望这会帮助别人......
| 归档时间: |
|
| 查看次数: |
3691 次 |
| 最近记录: |