程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Yii使用CForm類(Form builder)上傳文件

Yii使用CForm類(Form builder)上傳文件

編輯:PHP基礎知識
 

模型(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).
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved