我刚刚开始学习使用yii,并且已经完成了一些基本的工作。
假设我有两个简单的表:"用户"answers"项目",其中关系是1对多(一个用户可以有多个项目)
我已经使用GII生成了CRUD,但在"创建/编辑用户页面"中,它没有提供下拉列表,只提供了一个文本字段,我需要在其中输入用户ID。
编辑项目时,我希望有一个下拉列表,可以在其中选择用户(因此元素应该显示用户名列表)。
我认为GII无法生成该的控制器和查看代码
这样做的最佳实践是什么?
我已经按照中的说明声明了关系http://www.yiiframework.com/doc/guide/1.1/en/database.arr
public function relations()
{
return array(
'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
);
}
和
public function relations()
{
return array(
'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
);
}
找到生成用户列表的示例代码
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'project-form',
'enableAjaxValidation' => true,
));
?>
<?php echo $form->dropDownList($model, 'user_id',
CHtml::listData(Projects::model()->with('projects_rel')->findAll(), 'id', 'username'),
array('style'=>'width:150px;')
); ?>
检查这些用于生成扩展CRUD:的gii扩展
- Gii模板集合(FullModel、FullCRUD)
- github的最新发展
- Giix
两者都能够使用关系输入来呈现表单。GTC为这些输入使用了一个可以自定义的关系小部件。
不要忘记取消注释
$this->performAjaxValidation($model)
在控制器上,否则您将不得不创建项目而不是一个!