Как показать значения массива в cgridview в yii

Я использую yii и хочу отобразить результаты массива в cgridview. Код Cgridview говорит

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'users-grid',

    'dataProvider'=>$dataProviderObj,
    //'filter'=>$model,
    'columns'=>array(
    'companyName',
        array(
            'header'=>'Products',
            'value'=>'$data->usersproducts',
                ),

Теперь usersproducts – это имя отношения, которое поддерживает отношение "многие ко многим" между посетителями и продуктами.

Обычно, если я хочу получить данные из $data->usersproducts, я делаю это

foreach($data->usersproducts as $record)
{
echo $record->productName;
}

Но я не знаю, как получить эти данные в представлении cgrid, так как foreach не будет работать в массиве CGridView?

Я знаю, что могу использовать ($this,functionName) и возвращать результат, но я хочу сделать это только в массиве. Является ли это возможным? и если да, то как я могу это сделать?


person Let me see    schedule 30.11.2013    source источник


Ответы (1)


В вашем объекте $data создайте метод для получения всех названий продуктов, как вы описали.

public function getUserProductNames()
{
    $ret = "";
    $first = true;

    foreach ($this->userproducts as $record) {

        if ($first === true) {
            $first = false;
        } else {
            $ret .= ', ';
        }

        $ret .= $record->productName;
    }

    return $ret;
}

Затем в вашей конфигурации CGridView вы можете использовать:

'value'=>'$data->getUserProductNames()'
person Keilo    schedule 30.11.2013
comment
Я только что написал это! - person Developerium; 30.11.2013