Chiamata di funzione che restituisce un errore fatale:Chiamata alla funzione non definita getRecentProducts()

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

Domanda

Ciao, sono un principiante di Magento.Sto provando a chiamare un blocco di moduli personalizzati utilizzando getChildHtml() funzione che purtroppo mostra un errore fatale:Chiamata a funzione non definita getRecentProducts()

Sto usando Magento 1.9.2.4

Ho impostato un tema figlio (childtheme) sotto il tema rwd predefinito di Magento.

Ho copiato page.xml dal tema predefinito del pacchetto rwd.

Ho anche creato un nuovo file di layout (home.phtml) e sto cercando di ottenere il blocco in questo file.

Ho creato un nuovo blocco nei temi attivi page.xml sotto <default> etichetta:

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

Quindi nei temi attivi local.xml:

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

E nel mio file home.phtml che chiama: getChildHtml('newreference');

Il file di configurazione del modulo:

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

prodottirecenti.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 (blocco)

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 (modello)

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

Qualsiasi aiuto sarebbe molto apprezzato.

Aggiornamento:

ho provato a get_class($this) e restituisce perfettamente la classe giusta che è Test_Recentproducts_Block_Recentproducts.

Sta anche tornando getRecentProducts() come metodo di classe.

È stato utile?

Soluzione

MODIFICARE:Ho testato il tuo codice su un'installazione locale, presumo che tu lo abbia copiato da qualche parte.Il problema è questo - non è realmente un segno meno ma un carattere speciale diverso (non ho indagato ulteriormente, mi dispiace), e stavo ricevendo lo stesso errore che ottieni tu.scrissi $this-> me stesso e ha funzionato.

Probabilmente $this­>getRecentProducts(); dovrebbe essere $this­->getRecentProducts();

Altri suggerimenti

Assicurati di aver creato un file in latestproducts/block/recentproducts.php e che questo file latestproducts.php contenga la funzione getRecentProducts().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top