Невозможно использовать объект типа TbGridView в качестве массива Yiibooster

Я пытаюсь настроить новое представление сетки в yii booster, передавая переменную в начале представления для сортировки форматирования.

Я предполагаю, что я неправильно передаю переменную в этой строке

$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,

));

person Alex    schedule 01.10.2015    source источник


Ответы (1)


Это потому, что вы указываете объект типа 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',
           ),
    )
));
person Mohammad Eghlima    schedule 19.01.2016