2012-11-12 3 views
12

ich versucheMagento Überschreibung Customer Resource Modell

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

mit diesem xml overridde:

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

aber ich bekomme

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

und mit

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

oder

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

nichts passiert

Antwort

26

Sie sollten sie in der Lage sein, zu erreichen mit dem Code, den Sie hatten. Wenn es nicht überschrieben wird, versuchen Sie einige der Grundlagen wie z. B. sicherzustellen, dass Sie Ihren Cache gelöscht haben. Wenn das immer noch nicht funktioniert, kämpfen Sie möglicherweise mit einem anderen Modul, das es bereits außer Kraft setzt. In diesem Fall müssen Sie die nächsten Schritte in herauszufinden, um herauszufinden, die man gewinnt: Logik fusionieren, umschreiben/erweitert die anderen usw.

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

danke ... ich hatte gerade den falschen Modulnamen – wutzebaer

5

ich es tat (in 1.7.0.2) mit der folgende 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> 

und um sicher zu stellen, dass es wirklich funktioniert ich die folgende Klasse erstellt:

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

und rief die Ressource in der Steuerung meines Moduls wie diese

<?php 
class Final_Dummy_IndexController extends Mage_Core_Controller_Front_Action{ 
    public function indexAction(){ 
     $res=Mage::getResourceModel('customer/customer'); 
     die($res->amIHere()); 
    } 
} 
?> 

und das Ergebnis war:

Ja, Sir

ich diese Code helfen Ihnen in irgendeiner Weise hoffen. Denken Sie daran, den Cache zu löschen, und ich empfehle, den Magento-Compiler in der Entwicklungsphase zu deaktivieren.