2012-11-12 86 views
12

我嘗試overriddeMagento的覆蓋客戶資源模型

app\code\core\Mage\Customer\Model\Resource\Customer.php 

與該XML:

<models> 
    <customer_resource> 
     <rewrite> 
      <customer>My_Company_Model_Resource_Customer</customer> 
     </rewrite> 
    </customer_resource>  
</models> 

,但我得到

Mage registry key "_resource_singleton/customer/customer" already exists 

 <customer> 
      <rewrite> 
       <customer_resource>My_Company_Model_Resource_Customer</customer_resource> 
      </rewrite> 
     </customer> 

<models> 
     <customer> 
      <rewrite> 
       <resource_customer>My_Company_Model_Resource_Customer</resource_customer> 
      </rewrite> 
     </customer> 
    </models> 

什麼也沒有發生

回答

26

你應該能夠與你有代碼來完成它。如果未被覆蓋,請嘗試一些基本知識,例如確保已清除緩存。如果這仍然不起作用,你可能正在與另一個已經覆蓋它的模塊作鬥爭。在這種情況下,你需要弄清楚搞清楚接下來的步驟中哪一個勝:合併邏輯,改寫/擴展另外一個,等

<models> 
    <customer_resource> 
     <rewrite> 
      <customer>My_Company_Model_Resource_Customer</customer> 
     </rewrite> 
    </customer_resource> 
</models> 
+0

謝謝..我只是有錯誤的模塊名稱 – wutzebaer

5

我用它做(在1.7.0.2)以下XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<config> 
<modules> 
    <Final_Dummy> 
     <version>0.0.1</version> 
    </Final_Dummy> 
</modules> 
<frontend> 
    <routers> 
     <dummy> 
      <use>standard</use> 
      <args> 
       <module>Final_Dummy</module> 
       <frontName>dummy</frontName> 
      </args> 
     </dummy> 
    </routers> 
</frontend> 
<global> 
    <helpers> 
     <dummy> 
      <class>Final_Dummy_Helper</class> 
     </dummy> 
    </helpers> 
    <models> 
     <dummy> 
      <class>Final_Dummy_Model</class> 
      <resourceModel>dummy_resource</resourceModel> 
     </dummy> 
     <dummy_rsource> 
      <class>Final_Dummy_Model_Resource</class> 
      <deprecatedNode>dummy_mysql4</deprecatedNode> 
     </dummy_rsource> 
     <customer_resource> 
      <rewrite> 
       <customer>Final_Dummy_Model_Resource_Customer</customer> 
      </rewrite> 
     </customer_resource> 
    </models> 
</global> 
</config> 

,爲了確保它確實有效,我創建了下面的類:

<?php 
class Final_Dummy_Model_Resource_Customer extends Mage_Customer_Model_Resource_Customer{ 
    public function amIHere(){ 
     return 'Yes sir'; 
    } 
} 
?> 

,並呼籲像這樣

在我模塊的控制器的資源
<?php 
class Final_Dummy_IndexController extends Mage_Core_Controller_Front_Action{ 
    public function indexAction(){ 
     $res=Mage::getResourceModel('customer/customer'); 
     die($res->amIHere()); 
    } 
} 
?> 

,結果是:

是的,先生

我希望這些代碼可以幫助您以某種方式。記得清除緩存,我建議在開發階段禁用Magento編譯器。