私はyiiの初心者ですが、配列内の正しいアイテムにアクセスするのに問題があります。私は助けを得たいと思っていました。ここでコードを言い換えます。実際のコードを入力する方が簡単な場合はお知らせください。
ビュー「punt」がレンダリングされ、「competitionsController」で「actionPunt」関数が呼び出されます。この関数は、次のようにゲームとそのデータを取得します。
//CompetitionsControllerの関数actionPunt
$model=Competitions::model()->with(array('round', 'round.games', 'round.games.team1', 'round.games.team2', 'round.games.league',)) ->findByPk($id);
すべての($ model-> round-> games as $ g)に対して、次の2つのことが発生します。
$leagues[$g->league_id] = array('name'=>$g->league->name, 'image'=>$g->league->image, 'federation'=>$g->league->federation_image);
$games[$g->league_id][$g->group][] = $g;
次に、ビューは次のようにレンダリングされます。
$this->render('punt', array('model'=>$model, 'games'=>$games, 'leagues'=>$leagues, 'default_league'=>$default_league,));
//パントビュー
<table>
For every ($games as $game)
{
for every ($game as $group)
{
$grp=reset($group);
for every ($group as $g)
{
<tr><td><?php echo CHtml::image($image_url.$g->team1->image, $g->team1->name); ?></td>
<td><?php echo CHtml::image($image_url.$g->team2->image, $g->team2->name); ?></td>
<td><?php if($g->hasGameStarted())
{
echo CHtml::link('Punt', '#', array('onclick'=>'showDialog('.$model->id.','.$g->id.'); return false;',));
} ?>
</td></tr>
}
}
}
つまり、基本的に私はゲームのリストを持っています。team1とteam2で、ゲームはリーグごとにグループ化されます。リーグがクリックされると、ゲームが更新されてそのリーグのゲームが表示されます。
function showDialog(comp,game)
{
$("#competition_id").val(comp);
$("#game_id").val(game);
$("#punt_dialog").dialog("open");
}
showdialog関数から呼び出されるpunt_dialogは、フォームの描画に使用されるCJuiDialogウィジェットです。フォームには次の要素があります。
//フォームID「punt_form」
<label><input type="radio" name="punt" value="1">team1</label><label><input type="radio" name="punt" value="2">team2</label>
<label><input type="hidden" id="game_id" name="game_id" value="0" /><input type="hidden" id="competition_id" name="competition_id" value="0" /><input type="submit" value="Punt!" />
コードは正常に機能し、ダイアログに「team1またはteam2を選択できます」と表示され、選択内容が保存されて正しく表示されます。ただし、「team1」と「team2」は表示したくありません。チームの名前を表示したい。私は以下を含む多くのことを試みました:
まず、javascriptの関数呼び出しで:
showDialog('.$model->id.','.$g->id.');
$ g->team1->nameと$g->team2->nameのパラメーターを追加してみました
次に、さらに2つのパラメーターを追加します。
function showDialog(comp,game)
ただし、この結果、リンクがクリアされたときにダイアログボックスが表示されなくなります。実際には、画面全体が1〜2ピクセル上および左に移動します。
次に、私は次のことを試しました。
<label><input type="radio" name="punt" value="1">$g->team1->name</label>
この値には常に配列の最初のゲームのteam1が含まれているため、これは誤った夜明けを証明しました
そして最後に、私もテストとして、フォーム自体で試しました。
$testingteam=Game::model()->findByPk($g->id);
その後
<label><input type="radio" name="punt" value="1"><?php echo $testingteam->league_id; ?></label>
ただし、これは常にアレイの最初のゲームのリーグを表示していました。
私の目標は、選択したゲームのチームとリーグをpunt_dialogウィジェット/フォームに表示することです。showDialogに解析される2つの値はcompetition_idとgame_idであり、competition_idはleagueとは異なり、competitionには多くのリーグがあることに注意してください。
助けてくれてありがとう。
ブラン。