2010-01-28 3 views
8

Я создал модуль в локальной папке кода в нашем пользовательском пространстве имен. Блок не отображается во внешнем интерфейсе, и при проверке журнала исключений выясняется, что Magento ищет не в том месте.Почему Magento пытается вызвать пространство имен Mage, а не мое собственное пространство имен?

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

То же самое, если я исключить MyCompany_ префикс при вызове блока; он по-прежнему выглядит в пространстве имен Mage. у меня есть это в файле с именем MyCompany_All.xml в папке модулей, а также макеты CMS я Добавленные работает нормально, так что Magento определенно загружая его:

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

Кто-нибудь есть какие-либо идеи относительно того, что вызывая это?


Добавлено: Блок вызывается статическим блоком с этим шаблоном кода:

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

И в config.xml для блока:

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

Я думаю, что layout.xml или код, где называется этот блок является соответствующим местом для поиска. Чтобы диагностировать, я хотел бы увидеть это и, возможно, config.xml для рассматриваемого блока. – Laizer

+0

Большое спасибо за ваш ответ, я добавил информацию к вопросу. –

ответ

7

Попробуйте изменить ваше заявление блока следующим образом :

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

В файле конфигурации вы определили псевдоним для блоков (forthcomingproducts) и теперь вы должны следовать за ним. Magento будет разыскивать forthcomingproducts как MyCompany_ForthcomingProducts_Block по вашему желанию, а затем добавить имя капитализированного класса (list), создав имя класса MyCompany_ForthcomingProducts_Block_List. Когда вы используете псевдоним, о котором Magento не знает (MyCompany_ForthcomingProducts в вашем примере), предполагается, что он является частью пространства имен Mage.

Надежда, что помогает, Джо

+0

Спасибо, Джо! Теперь Magento прекратил бросать исключение, поэтому я предполагаю, что он нашел модуль. Имею еще одну проблему, но я посмотрю, смогу ли я ее решить первым! –

Смежные вопросы