1

月のリストをバインドする必要があるグリッドがあります。月のリストを作成し、以下に示すようにリストにバインドしました。

$items = $this->getMonths();
         $dataProvider= new CArrayDataProvider(array(),array('keyField'=>false));   
         $dataProvider->setData($items);
$this->render('monthlyReports',
               array('model'=>$this->loadModel($_POST['Users']['user_id']),
              'dataProvider'=>$dataProvider,));

これまで、すべてが正常に機能しています。ビューファイルには、次のコードがあります

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>$dataProvider,
'columns'=>array(
    'Months',
    array(
    'name'=>'Months',
    'value'=>'$data->Months'),
)));

ここでの問題は、View ファイルで$data->Monthsとして月にアクセスできないことです。月に直接アクセスするかのようにアクセスできます。月に$data->Monthsとしてアクセスするにはどうすればよいですか。私が渡している $items 配列には、次の値があります。

Array
(
[0] => Array
    (
        [Months] => January
    )

[1] => Array
    (
        [Months] => February
    )

[2] => Array
    (
        [Months] => March
    )

[3] => Array
    (
        [Months] => April
    )

[4] => Array
    (
        [Months] => May
    )

[5] => Array
    (
        [Months] => June
    )

)
4

2 に答える 2

3

配列データを渡しているため、データに としてアクセスする必要があります'$data["Months"]'

于 2013-08-05T08:28:11.913 に答える
0

これを行うには多くの方法があります。元:

コントローラ:

$monthList = $this->getMonths();

$this->render('monthlyReports',
               array('model'=>$this->loadModel($_POST['Users']['user_id']),
               'monthList'=>$monthList, // Pass the month list to the view
              'dataProvider'=>$dataProvider,));

意見:

array(
    'name'=>'Months',
    'value'=>function ($data, $row) use ($monthList){ return $data->Month? $monthList[$data->Month]['Months'] : '' ; }, // $data->Month it's the model attribute with the month value.
),
于 2013-08-05T08:29:39.867 に答える