毕竟我决定使用快速方法。我已经覆盖了Mage_Sales_OrderController
:
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Sales') . DS . 'OrderController.php';
class MyCompany_MyModule_OrderController extends Mage_Sales_OrderController
{
/**
* Check order view availability
* Overridden from Mage_Sales_Controller_Abstract to
* remove the customer restriction. We want to show all
* orders to all customers on any time.
*
* TODO: Maybe in the future add a customer group restriction
*
* @param Mage_Sales_Model_Order $order
* @return bool
*/
protected function _canViewOrder($order)
{
$availableStates = Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates();
if ($order->getId() && in_array($order->getState(), $availableStates, $strict = true)) {
return true;
}
return false;
}
}
在我的config.xml中,我告诉 Magento 先使用我的控制器并将其OrderController
用作备份。由于我只覆盖了一个函数,因此不会触及所有现有代码。
<?xml version="1.0"?>
...
<frontend>
...
<routers>
...
<sales>
<args>
<modules>
<MyCompany_MyModule before="Mage_Sales_OrderController">MyCompany_MyModule_Sales</MyCompany_MyModule>
</modules>
</args>
</sales>
</routers>
...
</frontend>
...