我已成功完成了客户属性,但在使用订单数据尝试相同的 *** 作时遇到错误.
<global> <blocks> <adminHTML> <rewrite> <sales_order_grID>WACI_adminHTMLExt_Block_Sales_Order_GrID</sales_order_grID> </rewrite> </adminHTML> </blocks> <!-- etc -->
应用程序/代码/本地/命名空间/模块/块/销售/订单/ GrID.PHP
class WACI_adminHTMLExt_Block_Sales_Order_GrID extends Mage_adminHTML_Block_Sales_Order_GrID{ protected function _prepareColumns() { $this->addColumn('dynamics_ord',array( 'header' => $this->__('Dynamics ID'),'wIDth' => '75px','index' => 'dynamics_ord',)); $this->addColumnsOrder('dynamics_ord','entity_ID'); return parent::_prepareColumns(); }}
我看到_prepareCollection是sometimes used,但我试图在setCollection期间修改集合,如果没有其他的话,简单.
无论如何,列都会显示,但不会生成任何数据. (当我尝试排序时页面错误).
有什么想法吗?
更新
这篇文章是this SO thread的扩展我已更新它以匹配模块的当前状态.也就是说,我正在为sales_flat_order和sales_flat_order_grID添加列.
从那篇文章中,我有一个动作来设置这个属性值(在订单完成之后).
我现在的问题是 – updateGrIDRecords()如何发挥作用?
=> updateGrIDRecords似乎在调用$order-> save()时自动调用(我在订单完成后手动完成).
如果我理解正确,因为我没有从任何其他模型中提取数据,所以_prepareColumns调用就是所需要的.
=>是的.保存attr后正确显示和排序.赢得!
解决方法 客户收集和订单网格集合之间的区别在于客户集合是从Mage_Eav_Model_Entity_Collection_Abstract派生的,而sales_flat_order_grID集合是从Mage_Sales_Model_Resource_Abstract派生的,而非EAV.因此您无法添加要选择的属性,就像您通常可以使用EAV一样 – 您要使用的所有属性必须表示为平面表中的表列.
您正在调用的函数addAttributetoSelect在Mage_Sales_Model_Resource_Collection_Abstract类中实现,并在后台使用addFIEldToSelect,因此在您的情况下,您应该在sales_flat_order_grID表中有一个名为dynamics_ord的列.
将属性值从订单EAV移动到订单网格的功能是Mage_Sales_Model_Resource_Order_Abstract :: updateGrIDRecords,此函数读取sales_flat_order_grID表的结构以了解应将哪些属性写入sales_flat_order_grID表,因此如果缺少dynamics_ord列,则必须将其添加到您的模块的安装脚本.
我遇到了关于如何在安装脚本中添加列然后将其添加到网格的this堆栈溢出解决方案.答案有点过时,但我认为它可行.
我还发现了this开箱即用的解决方案,关于如何添加将在订单网格上使用但尚未测试的属性,因此我无法确定它是否有效.
总结以上是内存溢出为你收集整理的Magento – 将自定义属性(列)添加到sales_order索引网格全部内容,希望文章能够帮你解决Magento – 将自定义属性(列)添加到sales_order索引网格所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)