2

I am geting this error only in Chrome, in Firefox everything is fine:

Fatal error: Call to a member function getName() on a non-object in /home1/idealtil/public_html/app/design/frontend/default/blank/template/catalog/product/view.phtml on line 55

here is my code from view.phtml:

<?php

$current_category = Mage::registry('current_category');

if ($current_category->getName() == 'Showroom'): ?> //this is line 55

<div class="product-essential">
<form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
    <div class="no-display">

................................. ....................................

what might be the problem?

4

2 回答 2

2

您的“类别”对象在 Chrome 中可能实际上为null,即,您是否调用Mage::registercurrent_category

检查打开该页面的 URL 和调用,或验证它不是会话问题(例如,您在 Firefox 会话中有数据,但在 Chrome 会话中没有)。

根据您到达该页面的方式,您可能处于current_category尚未(尚未?)设置的区域CategoryController::_initCategory(),因为例如 URL 中不存在该类别。有关更多详细信息,请参阅此答案。假设现在该类别已保存在会话中,并且您使用 Firefox 进行了几次页面点击。现在 Firefox 会话确实有一个可用的缓存类别,当您在 Firefox 中遇到麻烦的缓存时,您会看到缓存。然后使用没有可用会话或缓存的 Chrome 访问同一页面(还),这会给您一个错误。

您可能希望使用一些后备代码来包装调用,以回避问题并且不使用类别代码,除非确实有可用的类别:

// Here you might get NULL
$current_category = Mage::registry('current_category');

// If category is **not** NULL, *and* is Showroom, then...
if (($current_category) && ($current_category->getName() == 'Showroom')):

根据您在代码中的位置,您可以检查更多获取类别的方法;有关详细信息,请参阅此答案

于 2013-09-21T15:44:34.043 回答
1

我认为您在这些浏览器中打开了不同的 URL。一个是打开的,另一个是没有类别的,即

  1. http://example.com/cool-category/coolest-product

  2. http://example.com/coolest-product

在这第二个 url $current_category 将是 null 。

也可能是您从搜索结果页面来到产品,并且在 URL 中缺少类别参考。

于 2013-09-21T20:04:30.020 回答