如何在Magento';s管理命令网格
我想要一个额外的列在订单(s)为管理网格。假设其客户组Id 我的应用程序/etc/modules/MyProject\u Adminhtml看起来像:如何在Magento';s管理命令网格,magento,e-commerce,Magento,E Commerce,我想要一个额外的列在订单(s)为管理网格。假设其客户组Id 我的应用程序/etc/modules/MyProject\u Adminhtml看起来像: <?xml version="1.0"?> <config> <modules> <MyProject_Adminhtml> <active>true</active> <codePool>
<?xml version="1.0"?>
<config>
<modules>
<MyProject_Adminhtml>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Sales />
</depends>
</MyProject_Adminhtml>
</modules>
</config>
<?xml version="1.0"?>
<config>
<modules>
<MyProject_Adminhtml>
<version>1.0.0</version>
</MyProject_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>MyProject_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
是否有什么东西我遗漏了,因为我没有看到任何有序的网格。我正在使用Magento 1.4.1.1
在安达B的评论中,我写了以下几行:
var_dump($this->getLayout()->createBlock('MyProject_Adminhtml_Block_Sales_Order_Grid'));
在app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php中
然后,我选择了“创建新订单”并取消订单以查看var_dump的执行结果,我看到了以下内容:
/var/www/magento/var/report/72990635: line 10: syntax error near unexpected token `}' /var/www/magento/var/report/72990635: line 10: `#9 {main}";s:3:"url";s:80:"/index.php/admin/sales_order_create/cancel/key/0624033594dd63d9e145fc538f4c6bbb/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:5:"admin";}'
在modules/etc中,您有Atzen_Adminhtml,但您的项目是MyProject_Adminhtml。
除了这个问题,代码应该可以工作:即使您在sales表中没有customer\u group\u id,新列也应该出现在网格中。在modules/etc中,您有Atzen\u Adminhtml,但您的项目是MyProject\u Adminhtml。 除了这个问题,代码应该可以工作:即使您在sales表中没有customer\u group\u id,新列也应该出现在网格中。您就快到了 您需要为GroupID创建一个渲染器,因为核心中不存在渲染器 首先,将渲染器添加到addColumn,如下所示:
$this->addColumn('customer_group_id', array(
'header' => Mage::helper('sales')->__('Customer Group Id'),
'index' => 'customer_group_id',
'type' => 'text',
'renderer' => 'adminhtml/widget_grid_column_renderer_customergroup',
));
现在需要创建目录/app/code/local/MyProject/Adminhtml/Widget/Grid/Column/Renderer/,因为它可能不存在
现在创建一个Customergroup.php文件,其中包含以下类:
class MyProject_Adminhtml_Block_Widget_Grid_Column_Renderer_Customergroup extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
最后,您需要将其添加到MyProject中的config.xml中
<widget_grid_column_renderer_customergroup>Myproject_Adminhtml_Block_Widget_Grid_Column_Renderer_Customergroup</widget_grid_column_renderer_customergroup>
Myproject\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Customergroup
就在你另一次重写的旁边
刷新缓存后,销售订单网格中应该有组标签
附言
如果要将筛选器添加到sales order网格的顶部以使用此列,请将其添加到渲染器后面的“addColumn”中。(订单实际上并不重要)
“选项”=>TheReadyStore\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Customergroup::getCustomerGroupsArray(),
并将类型从“文本”更改为“选项”
干杯
罗伊你就快到了
您需要为GroupID创建一个渲染器,因为核心中不存在渲染器
首先,将渲染器添加到addColumn,如下所示:
$this->addColumn('customer_group_id', array(
'header' => Mage::helper('sales')->__('Customer Group Id'),
'index' => 'customer_group_id',
'type' => 'text',
'renderer' => 'adminhtml/widget_grid_column_renderer_customergroup',
));
现在需要创建目录/app/code/local/MyProject/Adminhtml/Widget/Grid/Column/Renderer/,因为它可能不存在
现在创建一个Customergroup.php文件,其中包含以下类:
class MyProject_Adminhtml_Block_Widget_Grid_Column_Renderer_Customergroup extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
最后,您需要将其添加到MyProject中的config.xml中
<widget_grid_column_renderer_customergroup>Myproject_Adminhtml_Block_Widget_Grid_Column_Renderer_Customergroup</widget_grid_column_renderer_customergroup>
Myproject\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Customergroup
就在你另一次重写的旁边
刷新缓存后,销售订单网格中应该有组标签
附言
如果要将筛选器添加到sales order网格的顶部以使用此列,请将其添加到渲染器后面的“addColumn”中。(订单实际上并不重要)
“选项”=>TheReadyStore\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u Customergroup::getCustomerGroupsArray(),
并将类型从“文本”更改为“选项”
干杯
Roy该字段是否存在于order对象上,或者您是否需要添加它?我之前没有查找该字段,而现在当我查看app/code/core/Mage/Sales/Model/order.php时,我找不到它。但是我的感觉是,如果DB表Sales\u flat\u order中存在一个字段,它会出现在这里。它确实存在于那里。该字段是否存在order对象上的xist,或者您需要添加它吗?我之前没有查找它,现在当我查看app/code/core/Mage/Sales/Model/order.php时,我找不到它。但是我的感觉是,如果DB表Sales\u flat\u order中存在一个字段,它会出现在这里。它确实存在于那里。实际上它是实际的文件名/namespacE.我在AtZEN的每一个地方都把它放在这样的位置上。所以,在这个问题上把它看成是一个打印错误。好的,检查Majto是否可以找到你的块:尝试添加一个控制器VARYDUMP($THE-GETLAOUT()-> CREATIOBULD(‘MyPrimeStAdMtHMLMLBIOBLASHORIZORD ORDER GRID’))我在app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php中尝试过这样做,因此,当我取消订单时,我看到了以下内容:/var/www/magento/var/report/report/72990635:line 10:意外标记附近的语法错误
,/var/www/magento/var/report/72990635:line 10:
#9{main};s:3:“url”;s:80:/index.php/admin/sales\u order\u create/cancel/key/0624033594dd63d9e145fc538f4c6bbb/“s:11:“script\u name”;s:10:“/index.php”;s:4:“skin”;s:5:“admin”}在Mage\u Adminhtml\u sales\u OrderController受保护的函数{var\u dump($this->getLayout()->createBlock('MyProject\u Adminhtml\u Block\u sales\u order\u Grid'))中添加此项;//代码的其余部分}并转到orders网格,如果结果为false,则意味着magento找不到您的模块。我在网格之前看到很多文本输出,它以:object(MyProject_Adminhtml_Block_Sales_Order_grid)#281开始,我认为这意味着magento找到了类。对象转储以:{[”_列“:protected]=>array(0){}[“\u lastColumnId”:protected]=>NULL[“\u collection”:protected]=>NULL[“\u varNameLimit”:protected]=>string(5)“limit”[“\u varNamePage”:protected]=>string(4)“sort”[“\u varNameDir”:protected]=>string(3)“dir”[“\u varnameffilter”:protected]=>string(6)事实上,它是实际的文件名/命名空间。我把AtZEN的每一个位置都放在它的位置上。所以,把它当作问题中的一个键入。好,检查Majto是否可以找到你的块:尝试添加一个控制器VARYDUMP($-> GeLayOutAuter)-> CeaRealBug(“MyPrimeStudiAdMtHMLMyBaskSalpOrdOrthOrthGrand”)我试着在app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php中这样做