这是我的代码:
在php文件中:
if($special>0){
$lease_price = (($special/1000)*38);
} else {
$lease_price = (($price/1000)*38);
}
$lease_price = $this->currency->format($lease_price);
并在前端tpl文件中:
<p>
<i class="fa fa-chevron-down"></i>
<b>Lease To Buy Price:</b>
<span><?php if($price>500){ ?>
<?php echo $lease_price; ?>
<?php } else { echo 'NA'; } ?></span>
</p>
目前我在var dump之后遇到此问题:Notice: Undefined variable: lease_price in /var/www/framec.co.uk/catalog/view/theme/lexus_superstore/template/product/product.tpl on line 160NULL
这是指向我的php文件http://pastebin.com/bTPtvgUQ
的pastebin的链接我需要添加什么才能使其正常工作?我需要这样的代码吗?:
'type' => $option['type'],
这是指向http://www.framec.co.uk/index.php?route=product/product&path=59_78&product_id=45
页面的链接答案 0 :(得分:0)
有两种方法可以解决这个问题。
因此,它已经定义,当您尝试使用它时,PHP不会返回错误。
$lease_price = '';
if($special>0){
$lease_price = (($special/1000)*38);
} else {
$lease_price = (($price/1000)*38);
}
$lease_price = $this->currency->format($lease_price);
如果没有定义,那么尝试访问未定义变量的代码将无法访问。
if ( isset($lease_price) ) {
if($special>0){
$lease_price = (($special/1000)*38);
} else {
$lease_price = (($price/1000)*38);
}
$lease_price = $this->currency->format($lease_price);
}
答案 1 :(得分:0)
尝试将其合并为一个,如果它不会以任何其他方式工作:)
问题很可能是它没有从你的PHP页面正确传递给你的TPL。
<p>
<i class="fa fa-chevron-down"></i>
<b>Lease To Buy Price:</b>
<span>
<?php
if($special > 0) {
$lease_price = (($special/1000)*38);
} else {
$lease_price = (($price/1000)*38); }
$lease_price = $this->currency->format($lease_price);
if($price > 500) {
echo $lease_price;
} else {
echo 'NA'; } ?></span>
</p>
在任何正常情况下,您应该检查是否
if(isset($lease_price)) {
// this gets executed if $lease_price has a value
} else {
// and this one if there is no initial value for $lease_price
}
您可以使用许多不同的方法处理此错误,但我认为关键是确保您的PHP代码位于正确的位置,并在模板中正确引用。
由于之前在SO上有一篇非常相似的帖子,我仍然认为你应该检查$price
的值,将其作为临时错误检查<?= $price ?>
添加到模板中,因为它可能已经存在转换为字符串,if($price > 500)
永远不会被评估,因为'2,000.00' > 500
不会是真的。
<强>更新强>
$tempPrice = str_replace(',',"", $price); //gets rid of ","
$tempPrice = substr($tempPrice,1); //removes currency from the front
$tempPrice = floatval($tempPrice); //converts to double from string
并将$price
替换为$tempPrice
if
<p>
<i class="fa fa-chevron-down"></i>
<b>Lease To Buy Price:</b>
<span>
<?php
$tempPrice = str_replace(',',"", $price); //gets rid of ","
$tempPrice = substr($tempPrice,1); //removes currency from the front
$tempPrice = floatval($tempPrice); //converts to double from string
if($special > 0) {
$lease_price = (($special/1000)*38);
} else {
$lease_price = (($tempPrice/1000)*38); }
$lease_price = $this->currency->format($lease_price);
if($tempPrice > 500) {
echo $lease_price;
} else {
echo 'NA'; } ?></span>
</p>