【发布时间】:2012-10-30 09:38:20
【问题描述】:
我正在 YII 中开发一个注册表单。在我的表格中,有一个单选选项可以选择注册为模式 1 或注册为模式 2。如果用户选择mode1,数据应该输入到table1或者应该输入到table2。 在 YII 中,每个模型处理一张表。这里我的表单处理两个表。
那么如何处理这样的表单来验证和输入数据到 YII 的表中呢?
【问题讨论】:
标签: php database activerecord yii
我正在 YII 中开发一个注册表单。在我的表格中,有一个单选选项可以选择注册为模式 1 或注册为模式 2。如果用户选择mode1,数据应该输入到table1或者应该输入到table2。 在 YII 中,每个模型处理一张表。这里我的表单处理两个表。
那么如何处理这样的表单来验证和输入数据到 YII 的表中呢?
【问题讨论】:
标签: php database activerecord yii
最简单的方法是为表单创建一个模型(假设它们具有相同的字段?) 此类将扩展 CFormModel(在下面的示例中,我将此模型称为 GlobalFormModel)
此模型将具有与其他两个模型相同的属性,以及一个名为 mode 的新属性 提交表单后,在控制器中您可以根据哪种模式处理它并根据正确的模型对其进行验证,例如:
$model = new GlobalFormModel
if(isset($_POST['GlobalFormModel'])){
$model->attributes = $_POST['GlobalFormModel'];
if ($model->mode == 1){
$newmodel = new FormOne;
$newmodel->attributes = $model->attributes;
} else {
$newmodel = new FormTwo;
$newmodel->attributes = $model->attributes;
}
... // validate and save $newmodel
}
$this->render("yourview",array("model"=>$model));
FormOne 是与第一个表关联的模型,FormTwo 与第二个表关联。首先,您创建 GlobalFormModel 的一个新实例(传递给视图)。您检查表单是否已提交(您可以在此处或在加载两个模型之一后验证它,这是您的选择)。您检查模式,然后加载正确的模型。
【讨论】: