我正在创建一个小时间表应用程序。时间表有运动员,每个运动员都有个人分时(如跑步或赛车驾驶)
运动员拥有多个运行,一个运行属于运动员,运动员有一个运动员和许多时间表(反之亦然)。时间表包含多个运行,最后一个运行属于时间表。
当我在视图中添加新游戏时,除了选择框中的athlete_id之外,我无法获得任何内容。我真的很想换个名字。而不是
<?php echo $run['athlete_id'];?>
,我已经尝试<?php echo $athlete['Athlete']['last_name'] ?>
,但我似乎无法让它发挥作用。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
如果不确切知道如何构建表单/数据,很难说,但我会怎么做。
在RunController中添加
$athletes = $this->Run->Athlete->find('list');
$this->set('athletes', $athletes);
然后在View中使用此表单帮助行。
<?php echo $form->input('Run.athlete_id', array('type' => 'select', 'options' => $athletes)); ?>
这应该有效,还有一种方法可以使用'compact'来使它更容易一些,但上面应该可以正常工作。
----开始编辑----
我做了一点研究,发现了紧凑的方法。
在RunController中使用
$athletes = $this->Run->Athlete->find('list');
$this->set(compact('athletes'));
然后在你的视图中使用
<?php echo $form->input('Run.athlete_id'); ?>
并且表单助手将自动找到压缩的Athlete数组并构建select。
----结束编辑----
希望这有帮助。
干杯, 迪安
答案 1 :(得分:0)
尝试打印$ run:print_r($ run)的内容,看看['运动员']是否存在。
如果没有,您可能必须在执行运行查询时手动包含Athlete模型: $这 - &GT;运行 - &GT;包含( '运动员');
答案 2 :(得分:0)
不要忘记使用Model类的displayField属性,即。
<?php
class Athlete extends AppModel {
public $name = "Athlete";
public $displayField = "name"; // the field name that has the athletes name in it
}
?>