我有一个页面,其中包含一个带有回声的if语句,即使符合条件,回显也不会打印到屏幕上。调试时,$ invoicedetails 计划等于 true
这是我视图中的相关信息
<?php
if($invoicedetails['Invoice']['scheduled']==1)
{
$status = 'Scheduled';
$fcol = 'Black';
$bgcol = '#EBD8E8';
$pay = NULL;
$dispute = NULL;
}
else if($invoicedetails['Invoice']['paid']==1)
{
$status = 'Paid';
$fcol = 'Black';
$bgcol = '#B9FAEA';
$pay = NULL;
$dispute = NULL;
}
else if($invoicedetails['Invoice']['sender_id']==$accountid)
{
$status = 'Sent';
$fcol = 'Black';
$bgcol = '#F8FAC0';
$pay = NULL;
$dispute = NULL;
}
else if($invoicedetails['Invoice']['receiver_id']==$accountid)
{
$status = 'Received';
$fcol = 'Black';
$bgcol = '#FAB9B9';
$pay = $this->Html->link('Pay', array('controller' => 'Invoices','action'=>'pay_admin',$invoicedetails['Invoice']['id'] )) ;
$dispute = $this->Html->link('Dispute', array('controller' => 'Disputes','action'=>'add_admin',$invoicedetails['Invoice']['id'] ));
}
?>
<tr>
<th>Actions: </th>
<td>
<?php
if($invoicedetails['Invoice']['scheduled']=='true'){
echo $pay;
}
?>
<?php echo $dispute; ?></td>
</tr>
答案 0 :(得分:0)
首先,你的视图中有太多的逻辑。那种东西进入你的控制器。它没有显示任何东西的原因是因为你告诉它不要。
首先你做:
if($invoicedetails['Invoice']['scheduled']==1) {
// (...)
$pay = NULL;
$dispute = NULL;
}
然后你告诉它回应那些NULL值:
if($invoicedetails['Invoice']['scheduled']=='true') {
echo $pay;
}
echo $dispute;
所以是的,它是回显的空值。你期待看到什么?
此外,在第一次检查中,您将与整数1匹配。在第二次检查中,您将匹配字符串(因此不是布尔值)为true。哪一个?如果它是0/1字段,请将引号放在true
附近,这样就得到:
if($invoicedetails['Invoice']['scheduled'] == true) {
或者(甚至更短)只丢弃整个真正的位:
if($invoicedetails['Invoice']['scheduled']) {