【问题标题】:How to use a condition inside Detail view widget in Yii2?如何在 Yii2 的详细视图小部件中使用条件?
【发布时间】:2016-01-25 13:07:59
【问题描述】:

以下是详细视图小部件

 <?= 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"; 
                    }

即,我想检查一个条件,根据该条件应该在视图中显示一个值。如何在详细视图小部件中执行此操作?

【问题讨论】:

    标签: yii2 yii2-advanced-app detailview


    【解决方案1】:

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

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

    【讨论】:

    • 我已经在我的问题中使用过它。这里只有两个选项,是或否。我有 3 个条件要检查
    【解决方案2】:

    Incognito Skull 的回答很棒,但我找到了另一种方法。借助模型内部的功能。 内部视图

    <?= 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";
                 }
                ],
    

    【讨论】:

      【解决方案3】:

      为我工作

      <?= DetailView::widget([
              'model' => $model,
              'attributes' => [
                  'title',
               [
               'attribute' => 'availability',
               'value' => (($model->availability ==1) ? "Available":'Not Available'),
               ],
            ],
          ]) ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多