我有一个resume
表,其中包含({1}}列position_type_id
列,该列是position_type
表的外键。
在resume
创建表单中,position type
下拉列表的选项从position_type
表中正确提取,并将其ID设置为选项的值。一切似乎进展顺利。
提交表单时,我可以验证值是否在POST变量中返回控制器,但是它们不会传递到具有属性population的模型中:
$model->attributes=$_POST['Resume'];
以下是控制器上的create
方法:
public function actionCreate()
{
$model=new Resume;
if(isset($_POST['Resume']))
{
$model->attributes=$_POST['Resume'];
if($model->save())
{
$this->redirect(array('view','id'=>$model->id));
}
}
$this->render('create',array(
'model'=>$model,
));
}
以下是从相关模型加载密钥的表单:
echo $form->activeDropDownList(
$model,
'position_type_id',
CHtml::listData(PositionType::model()->findAll(),'id','name')
);
position_type_id
是简历模型上的键,它将外键携带到PositionType模型。它在表单和简历模型上拼写相同。模型的关系是:'positionType' => array(self::BELONGS_TO, 'PositionType', 'position_type_id'),
我想我可以从POST数组中获取每个值并手动设置它们,但似乎这应该“正常工作”。设置属性后$model
上的值对于手动输入的字段是有的,对于来自生成的下拉列表的所有字段都是空白的。
以下是实际生成的内容:
<select name="Resume[position_type_id]" id="Resume_position_type_id">
<option value="1">English Teacher</option>
<option value="2">School Administrator</option>
</select>
答案 0 :(得分:0)
我可能错了,但对我来说,大规模的任务不起作用。在yii中,如果我们需要对其执行大量赋值,则需要将属性声明为安全。
因此,在您的模型Resume
中,您是否有以下规则:
public function rules() {
return array(
//the other rules ...
array('position_type_id, others_attributes', 'safe'),
//the rule above indicate the attributes that can be massively assigned
);
}