0

私は Yii の初心者で、コントローラのアクションからビューに配列を渡して、ビュー自体で配列の内容を読み取ることができません。

私のコントローラー:

public function actionReportAllWeeks()
{
    $user = YumUser::getById(Yii::app()->user->id);
    $format = 'Y-m-d';
    $clients = Client::model()->findAll();
    $UNI = array();$NPP = array();$DAN = array();$McC = array();$CAS = array();$LAC = array();
    foreach ($clients as $client) {
        $project_count = 0;
        $projects = Project::model()->findAll(array('condition'=>'client_id='.$client->id));
        for ($i=1; $i < 30; $i++) { 
            foreach ($projects as $project) {
                $date_created = $project->created;
                $createdDate = DateTime::createFromFormat($format, $date_created);
                $week_num = $createdDate->format('W');
                if ($client->shortname == 'UNI') {
                    if ($week_num == $i) {
                        $UNI[$i]++;
                    }
                }
                elseif ($client->shortname == 'NPP') {
                    if ($week_num == $i) {
                        $NPP[$i]++;
                    }
                }
                elseif ($client->shortname == 'DAN') {
                    if ($week_num == $i) {
                        $DAN[$i]++;
                    }
                }
                elseif ($client->shortname == 'McC') {
                    if ($week_num == $i) {
                        $McC[$i]++;
                    }
                }
                elseif ($client->shortname == 'CAS') {
                    if ($week_num == $i) {
                        $CAS[$i]++;
                    }
                }
                elseif ($client->shortname == '') {
                    if ($week_num == $i) {
                        $LAC[$i]++;
                    }
                }                       
            }
        }
    }

    $this->render('client/client', array('clients'=>$clients, 'UNI'=>$UNI, 'NPP'=>$NPP, 'DAN'=>$DAN, 'McC'=>$McC, 'CAS'=>$CAS, 'LAC'=>$LAC));
}

私の見解:

<table class="table table-striped table table-bordered" style="width:95%">
<thead>
  <tr>
    <th>Projects</th>
      <?php for ($i=1; $i < 52; $i++):?>
        <td style="text-align:center">Week <?php echo $i; ?></td>
      <?php endfor; ?>
  </tr>
</thead>
<tbody>
<?php foreach ($clients as $client): ?>
  <tr>
    <td><?php echo $client->name; ?></td>
    <?php for ($i=1; $i < 52; $i++):?>
      <td style="text-align:center">/*should echo some values from array*/</td>
    <?php endfor; ?>
  </tr>     
<?php endforeach;?>
</tbody>

任意の配列から要素を読み取ろうとすると、「未定義のオフセット 1」エラーが発生します。

4

1 に答える 1

0

エラー自体は、配列がインデックス 1 に値を持っていないことを意味します。エラーはコントローラーではなくビューにあるという結論に飛びついたようです。

あなたのコントローラーコードを見ると、ビューの前にエラーが発生している可能性があります。各条件で、次のようなコードがあります。

$someArray[$i]++;

これらはすべて$someArray[$i]未定義であるためエラーになります。すべての配列は最初は空です。

配列にデータを入力して、 array_fillの使用を開始することをお勧めします。

$NPP = array_fill(1,52,0);

これは、コントローラのインデックスが 1 から 30 であるのに対し、ビューでは 1 から 52 であるという事実を無視していることに注意してください。

今後の参考のために、表示される完全なエラー メッセージを必ず含めてください。これには、ファイルと行番号が含まれている必要があります。エラーを見れば、ビューではなく、コントローラーのインクリメント行の1つを指していると思います。

于 2013-01-04T18:46:35.263 に答える