как я могу поместить 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, имя пользователя, фото


person Noobs To be Pro Addict    schedule 26.08.2015    source источник
comment
Что ты имеешь в виду? Функция для значения может возвращать любой код html, который вы хотите. Html::img() возвращает строку HTML. Вы можете добавить туда любой другой html. Кстати. разве формат не должен быть «сырым»? Afaik 'html' будет экранирован...   -  person robsch    schedule 26.08.2015


Ответы (2)


Я сделал то же самое в 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 и сохранить этот файл в папке include Path 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 
    }
?>
person Prashant    schedule 27.08.2015

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

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'],
    ],
]); ?>

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

person ustmaestro    schedule 26.08.2015