Yii:如何使用其他模型数据填充Select输入?

时间:2012-05-24 20:02:14

标签: yii relational-database

我正在玩一个小应用程序,以学习使用Yii。

我创建了一个包含2个模型/表的小型webapp:项目和任务。 (1对多关系,在模型类中正确配置)。

我现在正在尝试自定义任务/创建视图,将文本输入字段替换为提出可用项目列表的选择框。

我打开了表单视图并尝试了这个:

<div class="row">
    <?php echo $form->labelEx($model,'project_id'); ?>
    <?php echo $form->textField($model,'project_id'); ?>
    <?php 
// my hack starts here
    $projects = Project::model()->findAll();
    $list = CHtml::listData($projects, 'id', 'name');
    echo $form->listBox($model,'project_id','', $list); ?>

// my hack ends here
    <?php echo $form->error($model,'project_id'); ?>
</div>

但是它不断发出警告或错误(例如Invalid argument supplied for foreach(),并且肯定不起作用。我无法理解我做错了什么。你能帮忙吗?

2 个答案:

答案 0 :(得分:6)

你的论点不合适(应该是):

$frameworks = Framework::model()->findAll();
$list = CHtml::listData($frameworks, 'id', 'name');
echo $form->listBox($model,'framework_id', $list,array());

检查documentation

答案 1 :(得分:3)

好的,我找到了,感谢Larry Ullman excellent tutorial

这是:

<?php echo $form->dropDownList($model,'project_id', CHtml::listData(Project::model()->findAll(), 'id', 'name')); ?>