Magento - Fatal error: Call to a member function getBackend() on a non-object in app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 816
Asked Answered
R

2

8

Getting this error when trying to use a custom filter inside a custom theme.

I have set up the new attribute "is_featured" and its in an attribute set. I made a product that assigned it as featured (yes/no choice)

My home page (in the CMS section) is including the following "panel"

<block type="catalog/product" name="catalog.product_featured_list" template="catalog/product/featured_list.phtml" after="-"/>

featured_list.phtml looks like this:

<?php
$storeId = Mage::app()->getStore()->getId();
$_productCollection=Mage::getResourceModel('reports/product_collection')
        ->addAttributeToSelect(array('name', 'url', 'small_image', 'price', 'short_description'))
        ->addAttributeToFilter('is_featured', 1)
        ->addAttributeToFilter('status', 1)
        ->setPageSize(3)
        ->setStoreId($storeId)
        ->addStoreFilter($storeId);
$_helper = $this->helper('catalog/output');
?>
<?php if($_productCollection->count()): ?>

<section class="content-box clearfix">
    <header>
        <h2>Featured products</h2>
    </header>
    <ul class="featured-products">
            <?php foreach ($_productCollection as $_product): ?>
            <?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
            <li>
                <h3>
                    <a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_productNameStripped; ?>">
                        <?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?>
                    </a>
                </h3>
                <a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_productNameStripped; ?>">
                    <img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(212); ?>" width="200" height="200" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" />
                </a>
                    <div>
                        <ul class="clearfix">
                            <li>From &pound;<?php echo number_format($_product->price, 2) ?></li>
                            <li>
                                <?php
                                $desct = nl2br($this->htmlEscape($_product->getShortDescription()));
                                $desct = strip_tags($_product->getShortDescription());
                                ?>
                                <p>
                                    <?
                                    echo Mage::helper('core/string')->truncate($desct, '100');
                                    ?>
                                    <a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_productNameStripped; ?>">
                                        <?php echo $this->__('more details'); ?>
                                    </a>
                                </p>
                            </li>
                            <li>
                                <form action="<?php echo $this->helper('checkout/cart')->getAddUrl($_product); //echo $this->getAddToCartUrl($_product); ?>" class="product-list-add-to-cart" method="get" id="product_addtocart_form_<?php echo $_product->getId()?>"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
                                    <?php if(!$_product->isGrouped()): ?>
                                    <label for="qty"><?php echo $this->__('Qty') ?>:</label>
                                    <input type="text" class="input-text qty" name="qty" id="qty" maxlength="12" value="<?php echo ($this->getMinimalQty($_product)?$this->getMinimalQty($_product):1) ?>" />
                                    <input type="hidden" name="product" value="<?php echo $_product->getId()?>" />
                                    <?php endif; ?>
                                    <button type="button" class="button" onclick="this.form.submit()"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
                                </form>
                            </li>
                        </ul>
                    </div>
            </li>
        <?php endforeach; ?>
    </ul>
</section>
<?php endif; ?>

It seems like the issue is with the collection at the start of the block. (I can remove this panel form the home page, and the site loads fine)

I'm pretty sure I have all the mentioned attributes available (is_featured looks to be the only custom one)

(this theme was inherited, so I'm not 100% versed in how it works! I'm simply copying it across)

Revareval answered 25/10, 2012 at 14:18 Comment(0)
N
10

I'm currently using 1.7, and whenever I get the "Call to a member function getBackend() on a non-object..." error, it's usually due to calling up the wrong model, or applying a filter to an attribute that doesn't exist in that collection.

After testing your code, it works without issue (mostly...) if I comment out this line:

->addAttributeToFilter('is_featured', 1)

My suggestion is to double-check that the product attribute id exists on your current installation, and it is set to the correct scope (Global / Correct Store?).

If it does exist correctly, another solution is to have the featured products selected manually, you may want to try using:

Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect(array('name', 'url', 'small_image', 'price', 'short_description'))
    ->addFieldToFilter('is_featured', 1)
    ->addFieldToFilter('status', 1)
    ->addStoreFilter($storeId)
    ->clear()->setPageSize(3)->load(); //setPageSize = How Many Products To Show

And see if that fixes it.

Neel answered 24/5, 2013 at 0:2 Comment(0)
L
0

In my case it helped to out comment this line (Line 765)

$customer->changeResetPasswordLinkCustomerId($newResetPasswordLinkCustomerId);

in

/app/code/core/Mage/Customer/controllers/AccountController.php

I think it could be also important to check weather the update script updated your database correctly. F.e. upgrade-1.6.2.0.6-1.6.2.0.7.php creates a table called rp_customer_id

Lexicologist answered 12/4, 2019 at 12:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.