2012-04-25 77 views
0

我想編輯從這裏生成的報告,example.com/index.php/admin/sales_order/index/。我需要在右側的下拉菜單中添加一個新的報告。控制器未加載?

我通過url將此頁面追蹤到它的控制器並拋棄了該類。 app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php indexAction()並得到這個類Ext4mage_Html2pdf_Sales_OrderController,所以我知道它被一個模塊覆蓋。在這種情況下,Ext4mage Html2pdf模塊。

該控制器僅僅使用覆蓋PDF方法,

require_once BP.'/app/code/core/Mage/Adminhtml/controllers/Sales/OrderController.php'; 
class Ext4mage_Html2pdf_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController{ 
//etc } 

所以我創建了一個地方我的新模塊,希望能改寫這個,因爲它是在社區。 app/code/local/Daves/OrderModule/controllers/Sales/OrderController.php並放置在下面。

require_once 'Mage'.DS.'Adminhtml'.DS.'controllers'.DS.'Sales'.DS.'OrderController.php'; 
require_once BP.'/app/code/community/Ext4mage/Html2pdf/controllers/Sales/OrderController.php'; 

class Daves_OrderModule_Sales_OrderController extends Ext4mage_Html2pdf_Sales_OrderController{ 

    public function indexAction(){ 

     die(); 

     return parent::indexAction(); 
    } 

} 

我預期的功能將是重裝後在管理銷售/訂單頁面,我會得到一個空白頁,我不知道。這意味着我的控制器沒有被加載。

我的IDE是示出了類被擴展,並把一個die()indexAction()方法在Ext4mage_Html2pdf控制器按預期方式工作。這只是因爲某種原因錯過了我的控制器。

嘗試直接使用example.com/admin/daves_ordermodule/sales_order/index也是一個瀏覽器中點擊控制器拋出一個404

我應該嘗試覆蓋塊呢?

我還沒有在我的配置中創建任何時髦的<rewrite>更新句柄,主要是因爲我不確定是否需要它們,或者它們會去哪裏。正如我所知,Magento從Zend那裏獲得了可怕的XML使用,我將在這裏粘貼我的配置。


app/etc/modules/Daves_OrderModule.xml

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <modules> 
     <Daves_OrderModule> 
      <active>true</active> 
      <codePool>local</codePool> 
      <depends> <!-- same as in the /app/etc/Mage_All.xml --> 
       <Mage_Reports/> 
       <Mage_Adminhtml/> 
       <Ext4mage_Html2pdf/> 
      </depends> 
     </Daves_OrderModule> 
    </modules> 
</config> 

app/code/local/Daves/OrderModule/etc/config.xml 0.1


app/code/community/Ext4mage/Html2pdf/etc/config.xml具體節點

<admin> 
    <routers> 
     <html2pdf> 
      <use>admin</use> 
      <args> 
       <module>Ext4mage_Html2pdf</module> 
       <frontName>html2pdf</frontName> 
      </args> 
     </html2pdf> 
     <emailattachments> 
      <args> 
       <modules> 
        <Ext4mage_Html2pdf before="Fooman_EmailAttachments">Ext4mage_Html2pdf</Ext4mage_Html2pdf> 
       </modules> 
      </args> 
     </emailattachments> 
     <adminhtml> 
      <args> 
       <modules> 
        <Ext4mage_Html2pdf before="Mage_Adminhtml">Ext4mage_Html2pdf</Ext4mage_Html2pdf> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 
+0

您已經完成了比您需要的更多功能: - )...請從Ext4mage_Html2pdf模塊中添加相關的''配置文件,您將得到我或其他人的答案。 – benmarks 2012-04-25 16:06:03

+0

嗨@benmarks我現在已經包括從etc/config的路由器節點爲Html2pdf – 2012-04-26 08:29:16

+0

嗨閱讀下面的文章是控制器重寫最好的解決方案http://www.forum2tech.com/discussion/38/controller-file-was項目1 – 2012-09-22 07:50:43

回答

2

假設你有沒有前端控制器,如下調整你的配置:

<!-- How to get to the module from the browser --> 
<admin> 
    <routers> 
     <adminhtml> <!-- My unique class group --> 
      <args> 
       <modules> 
        <Daves_Om before="Ext4mage_Html2pdf">Daves_OrderModule</Daves_Om> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

這裏做的事情是Mage_Adminhtml模塊的frontname下添加另一個控制器目錄。 <Daves_Om>的值基本上映射到文本節點+「控制器」,因此app/code/(configured codepool)/Daves/OrderModule/controllers/ - 然後應用典型的路由匹配。

+1

輝煌,謝謝!當我回來時,我會放棄這一點。我已經擱置了幾天讓它成熟! ,P – 2012-04-26 17:31:40