【问题标题】:Newly Created Block class not found in magento在 magento 中找不到新创建的 Block 类
【发布时间】:2017-05-12 19:24:19
【问题描述】:

在 Magento 1.9.2.4 中,我无法创建新块。当我创建一个类文件并在前端尝试获取类名或布局时,它会显示“找不到类”。

现有块工作正常,只有新块不工作。

我已经在 config xml 中定义了块

<?xml version="1.0"?>
<config>
  <modules>
    <Custom_Homepage>
      <version>0.1.0</version>
    </Custom_Homepage>
  </modules>
  <global>
    <blocks>
      <homepage>
        <class>Custom_Homepage_Block</class>
      </homepage>
    </blocks>
  </global>
</config>

<?php
 class Custom_Homepage_Block_Product_Slider3 extends
       Mage_Catalog_Block_Product_List{
   protected function _construct(){
      echo 1212;exit;
   }
 }
 ?>

并试图在模板文件中调用块:

$this->getLayout()->createBlock('homepage/product_Slider3')
->setTemplate('homepage/catalog/product/category-3.phtml')->toHtml();

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    尝试使用 Mage_Core_Block_Template 而不是 Mage_Catalog_Block_Product_List 进行扩展。也改一下这个

    $this->getLayout()->createBlock('homepage/product_Slider3') ->setTemplate('homepage/catalog/product/category-3.phtml')->‌​toHtml(); 
    

    $this->getLayout()->createBlock('homepage/product_slider3') ->setTemplate('homepage/catalog/product/category-3.phtml')->‌​toHtml(); 
    

    要显示这个块内容,你也可以这样调用,因为你没有使用任何前端布局

    $this->getLayout()->createBlock('homepage/product_slider3'); 
    

    【讨论】:

      【解决方案2】:

      除了 Jickson 提到的块名称中的拼写错误之外,您永远不应该在模板中以编程方式创建块。相反,使用 Layout XML 将您的块添加到您需要从中调用它的块中。然后,在该块的模板文件中使用$this-&gt;getChildHtml() 来调用您的新块。

      手动创建它本质上是绕过框架,这违背了使用它的目的。

      【讨论】:

        猜你喜欢
        • 2014-12-31
        • 1970-01-01
        • 2016-04-30
        • 2019-04-14
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 2019-04-23
        相关资源
        最近更新 更多