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>