2012-10-14 128 views
1

我試圖驗證字段,如果文件字段不是空的。因此,如果有人試圖上傳文件,我需要驗證其他字段以確保他們選擇了正在上傳的內容,但我不知道如何檢查以查看,或僅在字段不爲空的情況下運行規則。驗證另一個字段,如果文件字段不爲空

public function rules() 
{ 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
     array('full_name, gender_id','required'), 
     array('video', 'file', 'types'=>'mp4', 'allowEmpty' => true), 
     array('audio', 'file', 'types'=>'mp3', 'allowEmpty' => true), 
     array('video','validateVideoType'), 
    ); 
} 

public function validateVideoType() { 
    print_r($this->video); 
    Yii::app()->end(); 
} 

所以this->video總是空的,不管我是否上傳了一些東西。如何檢查該變量是否已設置?

回答

2

自定義驗證功能必須正確定義。它總是有兩個參數$attribute & $params

public function validateVideoType($attribute, $params) { 
    print_r($this->video); 
    Yii::app()->end(); 
} 

現在在這裏你應該寫你自定義的方式來驗證。 我相信,這將工作正常。

+0

謝謝,但$ params總是回來作爲一個空陣列...? – keeg

+0

$ params是規則中定義的其他參數,如消息。 –

0

您可以用jQuery/javascript檢查它,其中'new_document'是輸入文件字段的名稱。

if ($("#new_document").val() != "" || $("#new_document").val().length != 0) { 
     //File was chosen, validate requirements 
     //Get the extension 
     var ext = $("#new_document").val().split('.').pop().toLowerCase(); 
     var errortxt = ''; 
     if ($.inArray(ext, ['doc','docx','txt','rtf','pdf']) == -1) { 
      errortxt = 'Invalid File Type'; 
      //Show error 
      $("#document_errors").css('display','block'); 
      $("#document_errors").html(errortxt); 

      return false; 
     } 

     //Check to see if the size is too big 
     var iSize = ($("#new_document")[0].files[0].size/1024); 
     if (iSize/1024 > 5) { 
      errortxt = 'Document size too big. Max 5MB.'; 
      //Show error 
      $("#document_errors").css('display','block'); 
      $("#document_errors").html(errortxt); 

      return false 
     } 
    } else { 
     //No photo chosen 
     //Show error 
     $("#document_errors").css('display','block'); 
     $("#document_errors").html("Please choose a document."); 
     return false; 
    } 

這段代碼顯然不是完美的滿足您的需求,但可能有需求拼湊你所需要的東西。

相關問題