有一些代码:
<div class="test">
<div class="upsell-tags">
<?php echo $this->getChildHtml('product_additional_data') ?>
<?php echo $this->getChildHtml('upsell_products') ?>
</div>
</div>
我想在<div class="test">
之前添加if条件。我该怎么办?谢谢。
当我添加以下代码时,它显示我的错误。为什么呢?
<?php if(isset($this->getChildHtml('upsell_products'))):?>.....
<?php endif;?>
答案 0 :(得分:3)
来自PHP文档:
警告强>
isset()仅适用于变量,因为传递任何其他内容都会导致解析错误。要检查是否设置了常量,请使用defined()函数。
您正在传递函数的返回值,这不是有效用途。你需要做一些像
这样的事情$upsell = $this->getChildHtml('upsell_products');
if($upsell) {
// ...
}
答案 1 :(得分:2)
如果查看magento代码,函数getChildHtml将返回一个字符串。
/**
* Retrieve child block HTML
*
* @param string $name
* @param boolean $useCache
* @param boolean $sorted
* @return string
*/
public function getChildHtml($name = '', $useCache = true, $sorted = false)
如果你看起来多一点,看起来如果没有任何东西可以渲染,函数会返回一个空字符串。所以我只是在没有任何条件的情况下显示返回的html。如果你真的需要知道是否有什么东西,我会这样做:if($ this-&gt; getChildHtml($ name)!='')