基於 Kohana 3.2.0 版本實測。官方文檔中文件上傳驗證示例為:
$array->rule('file', 'Upload::type', array(array('jpg', 'png', 'gif')));
但實際開發中常需同時驗證表單字段與上傳文件,分別 new Validation($_POST) 和 new Validation($_FILES) 雖可行但略顯繁瑣。利用 array_merge 合併後一次性驗證更優雅:
<?php
$post = new Validation(array_merge($_POST, $_FILES));
// 表單字段驗證(常規寫法)
$post->rule('username', 'not_empty')
->rule('email', 'email');
// 文件上傳驗證(關鍵點)
$post->rule('img', 'not_empty')
->rule('img', 'Upload::type', array(':value', array('jpg', 'png', 'gif')))
->rule('img', 'Upload::size', array(':value', '1M'));
img:對應前端 <input type="file" name="img"> 的 name 屬性(非 id):value:Kohana 驗證系統的佔位符,自動傳入當前字段值Upload::type:驗證 MIME 類型,第二參數為允許的擴展名數組Upload::size:驗證文件大小,支援 1M、500K 等格式版本提示:本文基於 Kohana 3.2.0,其他版本語法可能有差異,請參考對應版本文檔調整。