deviloper
deviloper

Reputation: 7240

How to use custom array in yii2 dataprovider gridView?

I have the following array at the top of the view file:

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

And later in the page, I want to use it inside one of the columns of the dataprovider table as below:

[
  '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;']
]

But I get empty label. What am I missing?

Upvotes: 1

Views: 374

Answers (2)

Alen.Toma
Alen.Toma

Reputation: 4870

i dont know this language but i can se one things that is wrong. you are creating a function that containe $order_status. so when you call Value you have to pass on $order_status

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

i would call $order_status parameter for somthing else too.

Upvotes: 0

ScaisEdge
ScaisEdge

Reputation: 133370

could be you need use for pass the content of the array to the anonymous function eg:

  '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);
  },

Upvotes: 2

Related Questions