Как я могу положить 2 или более данных для сетки gridview

Я создаю страницу обратной связи для моего сайта, я использую gridview для отображения списка отзывов. в строке gridview я хочу заполнить фотографию, дату и имя пользователя в поле. я сделал фото на коробке. но мне интересно, как поставить другие данные

вид:

[   'attribute' => 'iduser.photo',
'format' => 'html',
'value'=>  function($data) { return Html::img($data->imageurl,['id'=>'photo']); },
'contentOptions'=>['style'=>'max-width: 10px; max-height: 10px'],
],

свойство обратной связи от модели / объекта обратной связи:

 * @property integer $ID_KOMENTAR
* @property integer $id
* @property string $KOMENTAR //comment
* @property string $TANGGAL  //date
* @property User $iduser     //related to the user

и связанные с обратной связью и пользователем.
Отзыв имеет одно имя пользователя, имя пользователя имеет много отзывов

public function getIduser()
{
return $this->hasOne(User::className(), ['id' => 'id']);
}

пользовательский объект: iduser, имя пользователя, фотография

0

Решение

Я сделал то же самое в Yii 1. Надеюсь, это поможет вам. Вы можете настроить любой столбец и поместить туда любой html. Я приведу небольшой пример для этого 🙂

В файле представления вы пишете код cgridview. Я вызываю функцию для получения значения для столбца, и в этой функции вы можете создать свой код соответственно. В моем примере имя столбца Офис-менеджеры и имя функции getManagerListFromOfficeBranch

<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'id' => 'user-grid',
'columns'=>array(
array(
'class' => 'CButtonColumn',
'name',
'email',
array(
'name'=>'Office Managers',
'type'=>'raw', //for allowing raw html
'value'=>'customFunctions::getManagerListFromOfficeBranch($data->officeid)' //here I have created custom function that will get managers of office branch from office table ($data is used to get any value from current row of branch{you can send your feedback id here if you want any info from feedback toggle}only use if you want to )
),
),

),

)); ?>

Теперь напишите свою функцию в файле.
Вы можете создать папку в защищенной папке с именем include и сохранить этот файл в папке includes
Путь Exm: /protected/includes/customFunctions.php

Включить файл в config / main.php

Exm: require_once realpath(__DIR__ . ‘/../includes/customFunctions.php’);

функция

<?php

class customFunctions{

public static function getManagerListFromOfficeBranch($officeid) {
$managerDetails=Office::model()->findAllByAttributes(array('officeid'=> $officeid));  //Office is the model object of Office Table
$managerList='';
foreach ($managerDetails as $key => $value) {
$managerList=$managerList.$value->manager->first_name." ".$value->manager->last_name."<br/>";
}
echo $managerList;        //all managers echo line by line in the column
echo CHtml::link('Users',array('Users/action')); //write custom HTML Here
}
?>
2

Другие решения

Я не проверял, но это должно работать на вас

public function actionIndex()
{
$dataProvider = new ActiveDataProvider([ 'query' => Feedback::find()->with('iduser')->orderBy(['ID' => SORT_ASC, 'TANGGAL' => SORT_ASC])]);
return $this->render('index', [ 'dataProvider' => $dataProvider ]);
}

по вашему мнению

<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',

// user attributes examples
[
'attribute' => 'iduser.photo',
'value' => function($model)
{
return Html::img($model->iduser->imageurl,['id'=>'photo']);
},
'contentOptions' => [
'style' => 'max-width: 10px; max-height: 10px'
],
'format' => 'raw',
],
// or in this mode
[
'value' => 'iduser.username'
],
...................

// your feedback attributes

'KOMENTAR',
'TANGGAL',

// actions colum
['class' => 'yii\grid\ActionColumn'],
],
]); ?>

Надеюсь, это то, что вам нужно

1

По вопросам рекламы [email protected]