2010-01-28 1 views
8

J'ai créé un module dans le dossier de code local dans notre espace de noms personnalisé. Le bloc n'est pas affiché sur le frontend, et en vérifiant le journal des exceptions, il s'avère que Magento regarde au mauvais endroit.Pourquoi Magento essaie-t-il d'appeler dans l'espace de noms Mage plutôt que dans mon espace de noms personnalisé?

exception ‘Mage_Core_Exception’ with message ‘Invalid block type: 
Mage_MyCompany_ForthcomingProducts_Block_List’ 
in /var/www/html/app/Mage.php:407 

va de même aussi si je le préfixe exclure MyCompany_ lorsque vous appelez le bloc; il regarde toujours dans l'espace de noms Mage. J'ai cela dans un fichier appelé MyCompany_All.xml dans le dossier des modules, et les mises en page CMS j'ai ajouté fonctionnent très bien, donc Magento est certainement le chargement:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <MyCompany_CmsLayouts> 
      <codePool>local</codePool> 
      <active>true</active> 
     </MyCompany_CmsLayouts> 
     <MyCompany_ForthcomingProducts> 
      <codePool>local</codePool> 
      <active>true</active> 
     </MyCompany_ForthcomingProducts> 
    </modules> 
</config> 

Est-ce que quelqu'un a des idées quant à ce provoquant cela?


Ajouté: Le bloc est appelé par un bloc statique avec ce code modèle:

{{block type="MyCompany_ForthcomingProducts/List" template="forthcomingproducts/list.phtml"}} 

Et le config.xml pour le bloc est:

<?xml version="1.0" encoding="utf-8"?> 
    <config> 
     <modules> 
      <MyCompany_ForthcomingProducts> 
       <version>0.9</version> 
      </MyCompany_ForthcomingProducts> 
     </modules> 

     <global> 
      <blocks> 
       <forthcomingproducts> 
        <class>MyCompany_ForthcomingProducts_Block</class> 
       </forthcomingproducts> 
      </blocks> 
     </global> 
    </config> 
+1

Je pense que le layout.xml ou un code où ce bloc est appelé est l'endroit approprié pour regarder. Pour diagnostiquer, je voudrais voir cela, et peut-être le config.xml pour le bloc en question. – Laizer

+0

Merci beaucoup pour votre réponse, j'ai ajouté l'information à la question. –

Répondre

7

Essayez d'ajuster votre déclaration de bloc comme suit :

{{block type="forthcomingproducts/list" template="forthcomingproducts/list.phtml"}} 

Dans votre fichier de configuration que vous avez défini un alias pour vos blocs (forthcomingproducts) et maintenant vous devriez le suivre. Magento va déréférencer forthcomingproducts pour être MyCompany_ForthcomingProducts_Block comme vous l'avez demandé, puis ajouter le nom de la classe majuscule (list), en créant le nom de classe MyCompany_ForthcomingProducts_Block_List. Lorsque vous utilisez un alis que Magento ne connaît pas (MyCompany_ForthcomingProducts dans votre exemple), il est supposé faire partie de l'espace de noms Mage.

espoir qui aide, Joe

+0

Merci Joe! Magento a cessé de lancer une exception maintenant, donc je suppose qu'il a trouvé le module. Avoir un autre problème mais je verrai si je peux le résoudre d'abord! –