Question

I have an array of models that looks something like this. The models are extensions of the base Yii model class (BazClass), so that's a little bit of a custom solution, but I don't see why it shouldn't work.

$list = array
(
    0 => FooClass#1
    (
        [BazClass:_attributes] => array
        (
            'FOO_ATTRIBUTE' => '4567'
            'BAZ_ATTRIBUTE' => '1234'
            'NAME' => 'FOO BAR'
        )
        [BazClass:_related] => array()
        [_md] => null
        [CModel:_errors] => array()
        [CModel:_validators] => null
        [CModel:_scenario] => ''
        [CComponent:_e] => null
        [CComponent:_m] => null
    ),
)

I made this a data provider by doing so:

$dataProvider = new CArrayDataProvider($list, array(
  'pagination'=>array(
    'pageSize'=>10,
  ),
));
$dataProvider->setData($list);

And try to render it in the view like so. Basically I'm just trying to show a list of the names, with the column named "Name".

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider,
    'columns'=>array(
      array(
        'header' => 'Name',
        'value' => $data->NAME,
      ),
    ),
));

The examples in the CGridView documentation make it look like that is possible, but the error I get is:

Either "name" or "value" must be specified for CDataColumn.

Well, I did specify a value, obviously, but it seems to be null. I also tried $data['NAME'] (because I somewhere read that the CArrayDataProvider doesn't return models), but it still evaluates to null.

I also checked that $dataProvider->getData() returns the same list as I passed it.

What gives?

Was it helpful?

Solution

you should place quotes around your value otherwise it gets interpreted in the wrong context

array( 'header' => 'Name', 'value' => '$data->NAME', ),
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top