Funktionsaufruf gibt schwerwiegenden Fehler zurück:Aufruf der undefinierten Funktion getRecentProducts()

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

Frage

Hallo, ich bin ein Neuling in Magento.Ich versuche, einen benutzerdefinierten Modulblock mit aufzurufen getChildHtml() Funktion, die leider einen schwerwiegenden Fehler anzeigt:Aufruf einer undefinierten Funktion getRecentProducts()

Ich verwende Magento 1.9.2.4

Ich habe ein untergeordnetes Thema (Childtheme) unter dem Magento-Standard-RWD-Thema eingerichtet.

Ich habe page.xml aus dem Standardthema des rwd-Pakets kopiert.

Ich habe auch eine neue Layoutdatei (home.phtml) erstellt und versuche, den Block in diese Datei zu bekommen.

Ich habe unter aktive Themes page.xml einen neuen Block erstellt <default> Etikett:

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

Dann in aktiven Themes local.xml:

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

Und in meiner home.phtml-Datei wird Folgendes aufgerufen: getChildHtml('newreference');

Die Konfigurationsdatei des Moduls:

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

Recentproducts.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 (Block)

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;
  }
}

Recentproducts.php (Modell)

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;
  }
}

Jede Hilfe wäre sehr dankbar.

Aktualisieren:

Ich versuchte zu get_class($this) und es gibt perfekt die richtige Klasse zurück, die es ist Test_Recentproducts_Block_Recentproducts.

Es kehrt auch zurück getRecentProducts() als Klassenmethode.

War es hilfreich?

Lösung

BEARBEITEN:Ich habe Ihren Code auf einer lokalen Installation getestet. Ich gehe davon aus, dass Sie ihn von irgendwoher kopiert haben.Das Problem besteht darin - ist nicht wirklich ein Minus, sondern ein anderes Sonderzeichen (ich habe es leider nicht weiter untersucht), und ich habe die gleiche Fehlermeldung erhalten wie Sie.Ich hab geschrieben $this-> Ich selbst und es hat funktioniert.

Wahrscheinlich $this­>getRecentProducts(); sollte sein $this­->getRecentProducts();

Andere Tipps

Stellen Sie sicher, dass Sie eine Datei in „recentproducts/block/recentproducts.php“ erstellt haben und diese Datei „recentproducts.php“ die Funktion getRecentProducts() enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top