Как передать пользовательские данные в EDataTables в Yii

Я использую расширение Yii EDataTables: http://www.yiiframework.com/extension/edatatables/

У меня есть виджет EDataTables как следовать

$this->createWidget(
    'ext.EDataTables.EDataTables', array(
        'id'           => 'items',
        'dataProvider' => $dataProvider,
        'ajaxUrl'      => '/ajax-update',
        'columns'      => array(array(
                                'user_id',
                                'email',
                                'name',
                                'created_at:date:Updated',
                                'updated_at:date:Updated',
                                )
        ),
        'options' => array(
            'bStateSave'    => false,
            'bPaginate'     => true,
        ),
    )
);

Я хочу передать пользовательский (значение, массив или объект в виджет, чтобы я мог использовать его в качестве значения строки)

Я осмотрел много мест, но я не мог найти способ сделать это. Не могли бы вы дать совет, как это сделать?

1 ответ

Решение

Предполагая, что у вас есть пользовательский столбец Value для имени, например:

$ nameExp = '$ this-> grid-> options ["nameArray"] [$ data-> user_id]';

И массив, как это

$namesInArray = array(
                '1'=>'FirstName LastName 1',
                '2'=>'FirstName LastName 2',
                '3'=>'FirstName LastName 3',
                '4'=>'FirstName LastName 4',
            );

Возможный способ передать дополнительные данные не из источника данных - это отправить их с массивом параметров или htmloptions (поскольку все остальные параметры для виджета должны иметь атрибут в классе, на который ссылается)

Таким образом, вы можете передать объект или массив в массив параметров и использовать его, как показано ниже

$nameExp = '$this->grid->options["nameArray"][$data->user_id]';
$namesInArray = array(
    '1'=>'FirstName LastName 1',
    '2'=>'FirstName LastName 2',
    '3'=>'FirstName LastName 3',
    '4'=>'FirstName LastName 4',
);
$this->createWidget(
    'ext.EDataTables.EDataTables', array(
        'id'           => 'items',
        'dataProvider' => $dataProvider,
        'ajaxUrl'      => '/ajax-update',
        'columns'      => array(array(
                                    'user_id',
                                    'email',
                                    'name',
                                    array('class' => 'CDataColumn', 'name' => 'Name from array options', 'sortable' => false, 'value' => $nameExp, 'type' => 'raw'),
                                    'created_at:date:Updated',
                                    'updated_at:date:Updated',
                                )
        ),
        'options' => array(
            'bStateSave'    => false,
            'bPaginate'     => true,
            'nameArray'     => $namesInArray
        ),
    )
);

Вы сможете использовать / получить доступ к массиву, значению или объекту с этим выражением значения строки и выполнять там необходимую логику!

Другие вопросы по тегам