我是yii的初学者,我无法访问数组中的正确项目。我希望得到一些帮助。我将在这里解释代码。如果输入实际代码更容易,请告诉我。
渲染我的视图“punt”,并在“CompetitionsController”中调用“actionPunt”函数。该功能用以下内容检索和检索游戏及其数据:
//竞赛控制器中的函数actionPunt
$model=Competitions::model()->with(array('round', 'round.games', 'round.games.team1', 'round.games.team2', 'round.games.league',)) ->findByPk($id);
对于每个($ model-> round->游戏为$ g),会发生以下两件事:
$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,));
// punt view
<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小部件。表单包含以下元素:
// form 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-&gt; team1-&gt; name和$ g-&gt; team2-&gt; name
然后再添加两个参数:
function showDialog(comp,game)
然而,结果是当链接被清除时没有出现对话框,实际上是屏幕,整个屏幕向上移动,向左移动一两个像素。
其次我尝试了以下内容:
<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的两个值是competition_id和game_id,competition_id与联盟不同,竞赛中有很多联赛。
提前感谢您的帮助。
Brun的。
答案 0 :(得分:0)
错误:
echo CHtml::link('Punt', '#', array(
'onclick'=>'showDialog(
'.$model->id.','.$g->id.',
"'.$g->team1->name.'",
"'.$g->team2->name.'");
return false;',));
function showDialog(comp,game, team1, team2)
{
$("#competition_id").val(comp);
$("#game_id").val(game);
$("#team1").text(team1);
$("#team2").text(team2);
$("#punt_dialog").dialog("open");
}
<label id="team1"><input type="radio" name="punt" value="1">team1</label>
<label id="team2"><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!" />