2015-10-26 20 views
2

以下是详细视图控件如何在Yii2中使用细节视图小部件中的条件?

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
      'id', 
      'name', 
      'entity_name', 
      'voucher_category', 
      'credit', 
      'debit', 
      'remarks:ntext', 
      'posting_date', 
      'payment.method', 

      [ 
      'label' => 'Reference Date', 
      'value' => $model->reference_date !=NULL ? $model->reference_date: 'Not Defined', 
      ], 
      'voucher_no', 

     ], 
    ]) ?> 

我想是检查

    if($model->voucher_category ==0) 
        { 
         return "Income Voucher"; 
        } 
        elseif($model->voucher_category ==1) 
        { 
         return "Exepense Voucher"; 
        } 
        else 
        { 
         return "General Voucher"; 
        } 

即,我想检查基础的条件上应在视图中显示的值。我如何在详细视图窗口小部件中做到这一点?

回答

2

您可以使用三元来添加条件。例如,

[ 
'attribute' => 'voucher_category', 
'value' => (($model->voucher_category ==0) ? "Income Voucher": (($model->voucher_category ==1)? "Exepense Voucher" : "General Voucher")), 
], 
+0

我已经在我的问题已经使用过它。这里只有两个选项:是或否,我有3个条件可以检查 – Bloodhound

+0

查看更新的代码。 –

0

隐身骷髅的答案很好,但我找到了另一种方式来做到这一点。借助函数内部模型。 内部视图

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
       'id', 

       ...  

       array(
       'format' => 'text', 
       'value'=>$model->getvoucher(), 
       'attribute'=>'voucher_category_id', 
       ), 

     ], 
    ]) ?> 

内部型号

   public function getvoucher() 
       { 
       if($this->voucher_category ==0) 
        { 
         return "Income Voucher"; 
        } 
        elseif($this->voucher_category ==1) 
        { 
         return "Exepense Voucher"; 
        } 
        else 
        { 
         return "General Voucher"; 
        } 
        } 

我不知道这种方法是正确的或应该被使用,但你可以做到这一点,以获得期望的结果。我个人使用疯狂头骨的答案。

另一种方式来做到这一点

[ 
      'label' => 'Vocuher Category', 

      'attribute' => function($model) 
      { 
       if($model->voucher_category == 0) 
        return "Income Voucher"; 
       if($model->voucher_category == 1) 
        return "Expense Voucher"; 
       else 
        return "General Voucher"; 
      } 
      ], 
相关问题