-1

我有一个页面,其中有一个带有回显的 if 语句,即使满足条件,回显也不会打印到屏幕上。调试时 $invoicedetails schedule等于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>   
4

1 回答 1

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']) {
于 2012-10-28T10:44:17.143 回答