首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Kohana 3.2 框架檔案上傳驗證規則寫法實戰

     編輯:PHP 綜合知識

Kohana Validation 庫支援檔案上傳驗證,但官方範例多為單獨驗證 $_FILES。實務上常需同時驗證表單欄位與上傳檔案,本文示範合併驗證的最佳寫法。

官方範例(單獨驗證檔案)

$array->rule('file', 'Upload::type', array(array('jpg', 'png', 'gif')));

實務痛點

  • 分別 new Validation($_POST)、new Validation($_FILES) 需雙重判斷
  • 錯誤訊息分散在兩個物件,前端顯示不便

解決方案:合併陣列單一驗證物件

$post = new Validation(array_merge($_POST, $_FILES));

完整驗證規則寫法

$post->rule('img', 'not_empty')
       ->rule('img', 'Upload::type', array(':value', array('jpg', 'png', 'gif')))
       ->rule('img', 'Upload::size', array(':value', '1M'));

關鍵點解析

  1. :value 佔位符:Kohana 3.2 會自動將欄位值傳入,Upload::type 簽名為 type($file, $allowed),故第一參數用 :value 接收檔案資訊陣列
  2. 欄位名稱:img 對應前端 <input type="file" name="img"> 的 name 屬性
  3. 大小限制:Upload::size 第二參數支援 1M、500K、1024 (bytes) 等格式
  4. 其他常用規則:Upload::valid(檢查上傳錯誤碼)、Upload::save(移動檔案)

控制器完整範例

public function action_upload() {
    $post = new Validation(array_merge($_POST, $_FILES));
    $post->rule('title', 'not_empty')
         ->rule('title', 'max_length', array(':value', 100))
         ->rule('img', 'not_empty')
         ->rule('img', 'Upload::type', array(':value', array('jpg','png','gif')))
         ->rule('img', 'Upload::size', array(':value', '2M'));

    if ($post->check()) {
        $file = $_FILES['img'];
        $filename = Upload::save($file, NULL, 'uploads/');
        // 入庫、回應成功
    } else {
        $errors = $post->errors('validation'); // 統一錯誤訊息
        // 回應失敗
    }
}

版本差異提醒

Kohana 3.0/3.1 的 Upload::type 參數順序可能不同,升級時請查閱對應版本 API 文件。


合併驗證讓表單與檔案共用同一錯誤收集機制,代碼更乾淨,前端顯示更統一。建議將常用規則封裝為基類方法複用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved