如何在yii2 dataprovider gridView中使用自定义数组?

时间:2017-12-30 09:47:11

标签: yii2

我在视图文件的顶部有以下数组:

$order_status = array(
    'nocourier' => 'در حال جستجوی پیک',
    'accepted' => 'پیک تعیین شد',
    'picking' => 'در حال دریافت مرسوله',
    'delivered' => 'تحویل داده شد'
);

稍后在页面中,我想在dataprovider表的一列中使用它,如下所示:

[
  'label' => 'Status',
  'format' => 'raw',
  'value' => function ($model, $order_status) {
      return Html::a("<div class='col-sm-8 progress' style='padding: 0px; height: 10px;'>
        <div class='progress-bar ".$model->status."'></div>
      </div><label class='col-sm-4'>".$order_status[$model->status]."</label>", null);
  },
  'headerOptions' => ['style' => 'text-align: center;'],
  'contentOptions' => ['style' => 'width: 300px;']
]

但我得到空标签。我错过了什么?

2 个答案:

答案 0 :(得分:2)

可能需要use将数组的内容传递给匿名函数,例如:

  'value' => function ($model)  use ($order_status){
    return Html::a("<div class='col-sm-8 progress' style='padding: 0px; height: 10px;'>
      <div class='progress-bar ".$model->status."'></div>
    </div><label class='col-sm-4'>".$order_status[$model->status]."</label>", null);
  },

答案 1 :(得分:0)

我不懂这种语言,但我可以做一件错误的事情。 您正在创建一个包含$ order_status的函数。因此,当您调用Value时,您必须传递$ order_status

Value($model , $order_status) for it to work.

我也会把$ order_status参数称为其他东西。