Вызов функции возвращает фатальную ошибку:Вызов неопределенной функции getRecentProducts()

magento.stackexchange https://magento.stackexchange.com/questions/108609

Вопрос

Привет, я новичок в Magento.Я пытаюсь вызвать блок пользовательского модуля, используя getChildHtml() функция, которая, к сожалению, показывает фатальную ошибку:Обращение к неопределенной функции getRecentProducts()

Я использую Magento 1.9.2.4.

Я установил дочернюю тему (childtheme) в теме rwd по умолчанию для magento.

Я скопировал page.xml из темы по умолчанию пакета rwd.

Я также создал новый файл макета (home.phtml) и пытаюсь получить блок в этом файле.

Я создал новый блок в файле page.xml активных тем в разделе <default> ярлык:

<block type="core/text_list" name="newreference" as="newreference"/>

Затем в активных темах local.xml:

<default>
    <reference name="newreference">
        <block type="recentproducts/recentproducts" name="recentproducts_recentproducts" template="recentproducts/recentproducts.phtml"></block>
    </reference>
</default>

И в моем файле home.phtml вызов: getChildHtml('newreference');

Конфигурационный файл модуля:

<?xml version="1.0"?>
<config>
  <modules>
    <Test_Recentproducts>
      <version>1.0</version>
    </Test_Recentproducts>
  </modules>
  <global>
    <blocks>
      <recentproducts>
        <class>Test_Recentproducts_Block</class>
      </recentproducts>
    </blocks>
    <models>
      <recentproducts>
        <class>Test_Recentproducts_Model</class>
      </recentproducts>
    </models>
  </global>
</config>

последниепродукты.phtml

<?php
$products = $this­->getRecentProducts();
?>

<div id="product_list">
  <h1>Recent Products</h1>
  <?php if (is_array($products) && count($products)) { ?>
    <?php foreach($products as $product) { ?>
      <div>
        <a href="<?php echo $product['url'] ?>"><?php echo $product['name'] ?></a>
      </div>
    <?php } ?>
  <?php } ?>
</div>

Recentproducts.php (блок)

class Test_Recentproducts_Block_Recentproducts extends Mage_Core_Block_Template {
  public function getRecentProducts() {
    // call model to fetch data
    $arr_products = array();
    $products = Mage::getModel("recentproducts/recentproducts")->getRecentProducts();

    foreach ($products as $product) {
      $arr_products[] = array(
        'id' => $product->getId(),
        'name' => $product->getName(),
        'url' => $product->getProductUrl()
      );
    }

    return $arr_products;
  }
}

Недавние продукты.php (модель)

class Test_Recentproducts_Model_Recentproducts extends Mage_Core_Model_Abstract {
  public function getRecentProducts() {
    $products = Mage::getModel("catalog/product")
                ->getCollection()
                ->addAttributeToSelect('*')
                ->setOrder('entity_id', 'DESC')
                ->setPageSize(5);

    return $products;
  }
}

Любая помощь будет высоко оценен.

Обновлять:

Я попытался get_class($this) и он прекрасно возвращает правильный класс, который Test_Recentproducts_Block_Recentproducts.

Оно также возвращается getRecentProducts() как метод класса.

Это было полезно?

Решение

РЕДАКТИРОВАТЬ:Я проверил ваш код на локальной установке, предполагаю, что вы его откуда-то скопировали.Проблема там в том, что - на самом деле это не минус, а какой-то другой специальный символ (извините, я не разбирался дальше), и я получал ту же ошибку, что и вы.Я написал $this-> я и это сработало.

Вероятно $this­>getRecentProducts(); должно быть $this­->getRecentProducts();

Другие советы

Убедитесь, что вы создали файл lateproducts/block/recentproducts.php и этот файл lateproducts.php содержит функцию getRecentProducts().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top