使用CForm类(Form builder)上传文件
2011-12-14 17:50
393 查看
虽然有很多单独的文件上传和 CForm(form builder)的文档,当没有两者相结合的例子。
注意:> 关于更多验证规则的说明请查看
Reference: Model rules validation
在这里最好的方式是在你的 FileUpload 模型中执行对图片的一些操作。注意:你不需要向 FileUpload::image 赋值,但是可以提供访问它的方法从而达到强壮模型(model)简化控制器(controller).
英文原文:
File uploads in CForm (Form builder)
模型(model)
首先需要一个文件上传的模型:FileUpload.php<?php class FileUpload extends CFormModel { public $image; /** * @return array validation rules for model attributes. */ public function rules() { return array( //note you wont need a safe rule here array('image', 'file', 'allowEmpty' => true, 'types' => 'jpg, jpeg, gif, png'), ); } }
注意:> 关于更多验证规则的说明请查看
Reference: Model rules validation
用于 CForm 的数组
下面来创建用于 CForm 的数组: uploadForm.php<?php return array( 'title' => 'Upload your image', 'attributes' => array( 'enctype' => 'multipart/form-data', ), 'elements' => array( 'image' => array( 'type' => 'file', ), ), 'buttons' => array( 'reset' => array( 'type' => 'reset', 'label' => 'Reset', ), 'submit' => array( 'type' => 'submit', 'label' => 'Upload', ), ), );
视图文件(view)
创建视图文件: upload.php<?php if (Yii::app()->user->hasFlash('success')): ?> <div class="info"> <?php echo Yii::app()->user->getFlash('success'); ?> </div> <?php endif; ?> <h1>Image Upload</h1> <div class="form"> <?php echo $form; ?> </div>
控制器(Controller)
添加控制器(controller)和动作(action):<?php class FileUploadController extends CController { public function actionUpload() { $model = new FileUpload(); $form = new CForm('application.views.fileUpload.uploadForm', $model); if ($form->submitted('submit') && $form->validate()) { $form->model->image = CUploadedFile::getInstance($form->model, 'image'); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //do something with your image here //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Yii::app()->user->setFlash('success', 'File Uploaded'); $this->redirect(array('upload')); } $this->render('upload', array('form' => $form)); } }
在这里最好的方式是在你的 FileUpload 模型中执行对图片的一些操作。注意:你不需要向 FileUpload::image 赋值,但是可以提供访问它的方法从而达到强壮模型(model)简化控制器(controller).
英文原文:
File uploads in CForm (Form builder)
相关文章推荐
- 使用CForm类(Form builder)上传文件
- HttpClient 4.3.6 使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- Android使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传
- 使用ajax提交form表单,包括ajax文件上传
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- 使用ajax提交form表单,包括ajax文件上传
- [转] 通过jQuery Ajax使用FormData对象上传文件
- [Ajax] 使用Ajax异步上传图片文件(非Form表单提交)
- Ajax使用FormData对象上传文件
- 使用H5的formData对象实现文件的异步上传
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- 通过Ajax使用FormData对象无刷新上传文件
- Ajax使用FormData对象实现无刷新上传文件
- Struts2 Ajax文件上传功能 使用Jquery.form插件
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- JS中使用FormData上传文件、图片的方法
- 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html
- 使用ajax提交form表单,包括ajax文件上传
- 使用FileUtils进行Java中Form表单上传文件