2010-01-28 11 views
8

Utworzyłem moduł w lokalnym folderze kodu w naszej niestandardowej przestrzeni nazw. Blok nie jest wyświetlany na interfejsie, a po sprawdzeniu dziennika wyjątków okazuje się, że Magento szuka w niewłaściwym miejscu.Dlaczego Magento próbuje wywoływać w przestrzeni nazw Mage zamiast mojej niestandardowej przestrzeni nazw?

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

To samo również jeśli wykluczyć prefiks MyCompany_ przy wywołaniu bloku; nadal wygląda w przestrzeni nazw Mag. mam to w pliku o nazwie MyCompany_All.xml w folderze modułów i układów CMS dodałem działają bez zarzutu, więc Magento jest zdecydowanie załadowaniem:

<?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> 

Czy ktoś ma jakieś pomysły co do tego co jest powodując to?


Dodano: Blok jest nazywany przez statycznego bloku z tego kodu szablonu:

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

a config.xml dla bloku jest:

<?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

myślę layout.xml lub kod gdzie ten blok jest nazywana jest właściwym miejscem do poszukiwania. Aby zdiagnozować, chciałbym to zobaczyć i być może plik config.xml dla danego bloku. – Laizer

+0

Dziękuję bardzo za odpowiedź, dodałem informacje do pytania. –

Odpowiedz

7

Spróbuj zmienić swoją deklarację bloku następująco :

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

W pliku konfiguracyjnym zdefiniowano alias dla bloków (forthcomingproducts) i teraz powinieneś go przestrzegać. Magento zmieni nazwę na forthcomingproducts na MyCompany_ForthcomingProducts_Block zgodnie z żądaniem, a następnie doda nazwę klasy z wielką literą (list), tworząc nazwę klasy MyCompany_ForthcomingProducts_Block_List. Kiedy używasz alis, o której Magento nie ma pojęcia (MyCompany_ForthcomingProducts w twoim przykładzie), zakłada się, że jest częścią przestrzeni nazw Mag.

nadzieję, że pomoże, Joe

+0

Dzięki Joe! Magento przestał teraz wyrzucać wyjątek, więc zakładam, że znalazł moduł. Mam inny problem, ale najpierw zobaczę, czy mogę go rozwiązać! –

Powiązane problemy