@walder

Можно ли в columns для DetailView написать функцию?

Привет,

есть ли возможность написать функцию для вывода таблицы, к примеру у меня есть данные в базе, может быть 3 айтема, а может и 4. Могу ли я написать что типо этого?
columns => [
  foreach($data as $item) {
    return 'label'=>$item['label'],
               'value'=> $item['value'] ;
  }
]
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
kawabanga
@kawabanga
Вопрос непонятен.

Вам нужно неопределенное кол-во колонок воткнуть в GridView? Если да, то определяйте $columns выше, и заполняйте его как угодно. Это ведь массив.

Если вам нужны кастомные данные для определенной колонки с функцией, то читайте хоть немного мануал
[
            'label' => 'Картинка',
            'format' => 'raw',
            'value' => function($data){
                return Html::img(Url::toRoute($data->category_image),[
                    'alt'=>'yii2 - картинка в gridview',
                    'style' => 'width:15px;'
                ]);
            },
        ],
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
В виджете DetailView нет свойства columns, возможно Вы имеете ввиду виджет GridView?
В любом случае Вы не можете использовать код приведенный в вопросе т.к. список атрибутов не может принимать функцию, а только массив. Но Вам никто не мешает сформировать этот массив до вывода виджета
Ответ написан
Комментировать
@maximilianoarturo
Можете написать что-то вроде:
$attributes = [];
foreach($data as $item) {
    $attributes[] = [ 
        'label'=>$item['label'],
        'value'=> $item['value'] 
    ];
  }

...

<?= DetailView::widget([
  'model' => $model,
  'attributes' => $attributes,
])?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы