0

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>
4

1 に答える 1

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
    );
}

「安全な」検証ルールに関する wiki へのリンク

于 2013-03-17T16:21:18.070 に答える