Yii GridView, вывод массива?

Доброй ночи, подскажите знатоки Yii.


Есть каталог дисков (Drivers), у каждого диска есть жанры (genres) (диск может относиться к нескольким жанром).


Связал их через many_to_many

public function relations()

{

return array(

'genres' => array(self::MANY_MANY, 'Genres', 'drives_in_genres(driver_id,genre_id)'),

);

}


И не как не поиму как в GridView вывести список всех категории диска, пробовал через фильтр ни в какую, все говорит, массив в строку не перегнать.


вот часть кода…
&lt;?php $this-&gt;widget('zii.widgets.grid.CGridView', array(<br/>
 'id'=&gt;'drives-grid',<br/>
 'dataProvider'=&gt;$model-&gt;search(),<br/>
 'filter'=&gt;$model,<br/>
 'columns'=&gt;array(<br/>
 'id',<br/>
 'name',<br/>
 'year',<br/>
 array(<br/>
 'name' =&gt; 'user_id',<br/>
 'value'=&gt; '$data-&gt;user-&gt;username',<br/>
 <br/>
 ),<br/>
 array(<br/>
 'name' =&gt; 'genres',<br/>
 'value'=&gt; '$data-&gt;genres-&gt;name',<br/>
 <br/>
 ),<br/>
 array(<br/>
 'class'=&gt;'CButtonColumn',<br/>
 ),<br/>
 ),<br/>
)); ?&gt;<br/>
<br/>
  • Вопрос задан
  • 9172 просмотра
Решения вопроса 1
nikel303
@nikel303
Как вариант можно в модели Drivers создать метод, который будет преобразовывать массив моделей Genres в строку, например:

public function getGenresText($sSep = ', ')

   $aRes = array();
   foreach ($this->genres as $itm) {
      $aRes[] = $itm->name;
   }

   return implode($sSep, $aRes);
}


а в гриде вызывать этот метод.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы