Как передать пользовательские данные в 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
),
)
);
Вы сможете использовать / получить доступ к массиву, значению или объекту с этим выражением значения строки и выполнять там необходимую логику!