2015-10-01 5 views
0

Я пытаюсь настроить новый вид сетки в буфере yii, передавая переменную в начале представления для сортировки форматирования.Невозможно использовать объект типа TbGridView как массив Yiibooster

Я полагаю, я не передавая переменную должным образом с помощью этой линии

$gridColumns = $this->widget('booster.widgets.TbGridView', array(

Как бы я идти об использовании этой переменной? Я могу создать новый массив форм, не используя yiibooster, но с активированным виджетам больше не нравится имя переменной

Проблема в том, что я получаю сообщение об ошибке в заголовке сообщения.

$gridColumns = $this->widget('booster.widgets.TbGridView', array(
    'id' => 'delegate-grid', 
    'dataProvider' => $model->search(), 
    'filter' => $model, 
    'columns' => array(
     // 'id', 
     array(
      'name' => 'forename', 
      'type' => 'raw', 
      'value' => 'CHtml::link($data->forename, array("user/view", "id" => $data->id))', 
     ), 
     'surname', 
//  'facilities', 
     // 'telephone', 
     // 'address_id', 
     /* 
      'logo_path', 
     */ 
     array(
      'class' => 'booster.widgets.TbButtonColumn', 
     ), 
    ), 
)); 

$groupGridColumns = $gridColumns; 
$groupGridColumns[] = array(
    'name' => 'firstLetter', 
    'value' => 'substr($data->surname, 0, 1)', 
    'headerHtmlOptions' => array('style' => 'display:none'), 
    'htmlOptions' => array('style' => 'display:none') 
); 

$this->widget('booster.widgets.TbGroupGridView', array(
    'id' => 'user-grid', 
    'type' => 'striped bordered condensed highlight', 
    //'template' => "{items}", 
    'dataProvider' => $model->search(), 
    'filter' => $model, 
    'extraRowColumns' => array('firstLetter'), 
    'extraRowExpression' => '"<b style=\"font-size: 3em; color: #333;\">".substr($data->surname, 0, 1)."</b>"', 
    'extraRowHtmlOptions' => array('style' => 'padding:10px;text-align: center;'), 
    'columns' => $groupGridColumns, 

)); 

ответ

0

Это потому, что вы даете объект типа CGridView в TbGroupGridView в качестве параметра.

$groupGridColumns = $gridColumns;

Вы помещаете объект типа TbGridView($gridColumns) в $groupGridColumns, а затем дать его к TbGroupGridView, но TbGroupGridView columns property ожидает, что ее значение представляет собой массив массивов (определение столбцов) и поэтому выбрасывает новое исключение когда в первая ячейка $groupGridColumns найти объект. Вам не нужна первая часть и с некоторыми изменениями, ваш код должен работать нормально, если включена фильтрация.

$this->widget('booster.widgets.TbGroupGridView', array(
    'id' => 'user-grid', 
    'type' => 'striped bordered condensed highlight',   
    'dataProvider' => $model->search(), 
    'filter' => $model, 
    'extraRowColumns' => array('firstLetter'), 
    'extraRowExpression' => '"<b style=\"font-size: 3em; color: #333;\">".substr($data->surname, 0, 1)."</b>"', 
    'extraRowHtmlOptions' => array('style' => 'padding:10px;text-align: center;'), 
    'columns' => array(
      array(
       'name' => 'forename', 
       'type' => 'raw', 
       'value' => 'CHtml::link($data->forename, array("user/view", "id" => $data->id))', 
      ), 
      'surname', 
      array(
       'name' => 'firstLetter', 
       'value' => 'substr($data->surname, 0, 1)', 
       'headerHtmlOptions' => array('style' => 'display:none'), 
       'htmlOptions' => array('style' => 'display:none') 
      )   
      array(
       'class' => 'booster.widgets.TbButtonColumn', 
      ), 
    ) 
));