yii 一个表单提交多个模型数据
2012-09-17 12:02
441 查看
正在需要的时候发现了这个大牛的博文,动手实践过后,记录在此。
(原文在此)
接下来,gii生成user和profile模型
然后gii生成RegisterController并整理成如下:
在views里的register包里创建
(原文在此)
--user表 Create Table: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) DEFAULT NULL, `userpass` varchar(45) DEFAULT NULL, `profile_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_msjy_user_1_idx` (`profile_id`), CONSTRAINT `profile_id` FOREIGN KEY (`profile_id`) REFERENCES `msjy_profile` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 --profile表 Create Table: CREATE TABLE `msjy_profile` ( `id` int(11) NOT NULL AUTO_INCREMENT, `status` tinyint(4) DEFAULT NULL, `address` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
接下来,gii生成user和profile模型
然后gii生成RegisterController并整理成如下:
class RegisterController extends Controller { public function actionIndex() { $this->render('index'); } public function actionCreate() { $modelA = new User; $modelB = new Profile; if(isset($_POST['User']) && isset($_POST['Profile'])) { $modelA->attributes=$_POST['User']; $modelB->attributes=$_POST['Profile']; if($modelA->validate() && $modelB->validate()) { if ($modelB->save(false)) { $modelA->profile_id = $modelB->id; if ($modelA->save(false)) { $this->redirect(array('User/view','id'=>$modelA->id)); } } } } $this->render('create',array( 'modelA'=>$modelA, 'modelB'=>$modelB, )); } }
在views里的register包里创建
--create.php <?php echo $this->renderPartial('_form', array('modelA'=>$modelA,'modelB'=>$modelB)); ?> _form.php <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'User-form', 'enableAjaxValidation'=>false, )); ?> Fields with * are required. <?php echo $form->errorSummary(array($modelA,$modelB)); ?>//注意这里 <?php echo $form->labelEx($modelA,'username'); ?> <?php echo $form->textField($modelA,'username'); ?> <?php echo $form->error($modelA,'username'); ?> <?php echo $form->labelEx($modelA,'userpass'); ?> <?php echo $form->textField($modelA,'userpass'); ?> <?php echo $form->error($modelA,'userpass'); ?> <?php echo $form->labelEx($modelB,'status'); ?> <?php echo $form->textField($modelB,'status'); ?> <?php echo $form->error($modelB,'status'); ?> <?php echo $form->labelEx($modelB,'address'); ?> <?php echo $form->textField($modelB,'address'); ?> <?php echo $form->error($modelB,'address'); ?> <?php echo CHtml::submitButton($modelA->isNewRecord ? 'Create' : 'Save'); ?> <?php $this->endWidget(); ?>另外,关于create方法里的验证,原文有说明,此处省略文字若干。。。。。
相关文章推荐
- yii 一个表单提交多个模型数据
- yii 一个表单提交多个模型
- Yii表单模型使用及以数组形式提交表单数据
- yii框架表单模型使用及以数组形式提交表单数据示例
- yii框架表单模型使用及以数组形式提交表单数据示例
- YII存诸一个表单的数据到多个模型内
- Yii框架用一个表单搜集多个模型数据
- struts2中一个表单中提交多个请求(动态调用方法)
- 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
- 关于一个表单form包含多个提交动作submit的解决方法
- javascript实现一个html提交的表单数据放到另一个html页面显示
- 7、struts2 案例( 模型驱动、 防止表单重复提交--拦截器 、数据回显 、值栈 、 OGNL表达式综合运用)
- 一个form表单实现提交多个action
- 一个form表单需要多个提交按钮的实现 (两种方式)
- 一个用javascript编写的表单提交的例子(包括用正则表达式对数据进行验证)
- struts2中一个表单中提交多个请求的例子(多个提交按钮)
- 一个form表单实现提交多个action
- (转)一个form表单实现提交多个action
- MVC 在提交一个表单数据时出现System.Web.HttpRequestValidationException (0x80004005):错误
- 用jquery提交多个表单的数据