How to get values of array in GridView

Hi guys,

I read out records of database using GridView:: widget like this:





<?=

    GridView::widget([

        'dataProvider' => $dataProvider,

        'filterModel' => $searchModel,

        'columns' => $gridColumn,

.

.

.




$gridColumn

will be defined like this

[size="2"]




.

.

.

[


'attribute' => $anrede,

'label' => Yii::t('app', 'Anrede'),

'format' => 'html',

'value' => function($model) {

$nummer_art = "verwendungszweck";

return

"<div id=''><ul><li><span class='glyphicon glyphicon-filter'></span>" . "  " . 

LKontaktVerwendungszweck::getVerwendungszweck_all($model)->verwendungszweck . 			

"<div id=''><ul><li><span class='glyphicon glyphicon-filter'></span>" . "  " .

LKontaktVerwendungszweck::getVerwendungszweck_one($model, $nummer_art) 

}

],

.

.

.




[/size]

[size="2"]My problem is following:[/size]

[size="2"]




"<div id=''><ul><li><span class='glyphicon glyphicon-filter'></span>" . "  " .

LKontaktVerwendungszweck::getVerwendungszweck_all($model)->verwendungszweck 



[/size]

[size="2"] will throw out error


Trying to get property of non-object

'cause method reurns an array. Here is code of method:[/size]

[size="2"]




public function getVerwendungszweck_all($model) {      

return LKontaktVerwendungszweck::find()

->leftJoin('kontakt_telefon', 'l_kontakt_verwendungszweck.id=kontakt_telefon.id_kontakt_verwendungszweck') 

->leftJoin('e_kontakt', 'kontakt_telefon.id_e_kontakt=e_kontakt.id')   				

->leftJoin('bewerber', 'e_kontakt.id_person=bewerber.id_person ') 		

 ->where(['bewerber.id_person' => $model::findOne([$model->id])->id_person])->all();

 }



[/size]

[size=“2”]I could exploit return value of this method using foreach, but I can’t use foreach in GridView. Any ideas how to get all values of this tables?[/size]

[size=“2”]Here is code exploting return vlaues of method, which I can’t use by now in GridView[/size]

[size="2"]




<?php $x = 1;

foreach ($query_all as $attributes) {            

if ($x == 1)                            

echo $attributes->verwendungszweck . ","; 			

else                            

echo $attributes->verwendungszweck;                  

$x++;          

} 			

?>



[/size]

Yes, you can use a foreach loop in the anonymous function like the following:




'value' => function($model) {

    $nummer_art = "verwendungszweck";

    $items = LKontaktVerwendungszweck::getVerwendungszweck_all($model);

    $html = '<ul>';

    foreach ($items as $item) {            

        $html .= "<li>" . $item->verwendungszweck . "</li">; 			

    }

    $html .= "</ul>";

    return $html;

}



Bingo!!

U and umneeq of Russia are the greatest exponents of this forum. Without you, several problems using yii would have been unsolved. Thx a lot for this!!

Just go ahead