我必须在订单视图中放置一个按钮,以便进一步发送订单ID。 id将用于简单的数据库查询,然后它应返回到订单视图。
我发现了如何创建按钮,我在核心的view.php之后创建了app/code/local/Mage/Adminhtml/Block/Sales/Order/View.php
。
这是我的代码:
class Mage_Adminhtml_Block_Sales_Order_View extends
Mage_Adminhtml_Block_Widget_Form_Container
{
public function __construct()
{
$this->_objectId = 'order_id';
$this->_controller = 'sales_order';
$this->_mode = 'view';
parent::__construct();
$this->_removeButton('delete');
$this->_removeButton('reset');
$this->_removeButton('save');
$this->setId('sales_order_view');
$order = $this->getOrder();
$this->_addButton('release_payment', array(
'label' => Mage::helper('sales')->__('Release Payment'),
'onclick' => 'setLocation(\'' . $this->getUrl('*/*/release') . '\')',
'class' => 'go'
));
}
我想要的是这个应该是sales_order / release的位置实际上对订单ID做了些什么。我试图了解如何但我无法实际创建控制器。
答案 0 :(得分:0)
您应该将这些覆盖收集到模块中。否则,丑陋的方法就是复制
app/code/core/Mage/Adminhtml/controllers/OrderController.php
到
app/code/local/Mage/Adminhtml/controllers/OrderController.php
并将releaseAction()
- 函数添加到其中。
对于更优雅的解决方案,您需要在其etc/config.xml
文件中创建一个带有配置选项的模块,以覆盖/重载指定的块和控制器代码。使用此方法可以更好地包含更改,并且可以轻松地打开/关闭模块。此外,在扩展原始块/控制器时,您不需要包含修改/添加的方法以外的任何内容,其余的将从原始文件执行。
实际上即使是Magento的主要文档都有不错的例子: http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller
谷歌搜索magento controller overload
也给出了很好的结果,所以我不会在这里给出一个冗长的例子。