我有一个resume
表,其中有一个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>
1条答案
按热度按时间wooyq4lh1#
我可能是错的,但对我来说,大规模赋值不起作用。在yii中,如果我们需要对一个属性执行大规模赋值,它需要被声明为安全的。
那么在你的
Resume
模型中,你有以下规则吗:A link to the wiki about the 'safe' validation rule