2011-09-25 90 views
0

我正在使用Zend_File_Transfer進行PHP文件上傳,並且想爲驗證器添加自定義消息。如何爲Zend_File_Transfer_Adapter_Http驗證器設置自定義消息

這是我要做的事:

$upload = new Zend_File_Transfer_Adapter_Http(); 
$upload->addValidator('Size', false, array(
    'max' => $userLimits->photos->max_size * 1024 * 1024, 
    'messages' => "'%value%' adlı dosya en fazla '%max%' olmalıdır")); 

$upload->addValidator('Extension', false, array(
    'case' => 'jpg,jpeg', 
    'messages' => "'%value%' jpg veya jpeg formatında olmalıdır")); 

if (!$upload->isValid()) { 
    throw new Zf_Model_Exception('Hata: '.implode('<br>', $upload->getMessages())); 
} 

$files = $upload->getFileInfo(); 

這沒關係高達這裏......問題是,如果我想改變Zend_Validate_File_Upload的消息是什麼?文件上傳驗證器默認添加到Zend_File_Transfer_Adapter_Http類的構造器中。

我看不到從「$ upload」實例訪問文件上傳驗證程序的方法... 刪除驗證程序並將其添加回自定義消息不是一個選項,因爲它在代碼中被避免了...

所以我在這裏錯過了什麼?

+1

你的意思是$ upload-> getValidator( 'ValidatorName')不適合於你的情況? –

+0

是的,這就是我一直在尋找的東西,我不知道我是如何錯過那個......謝謝...... – madpoet

回答

3

從記錄上來看,這就是我做的:

$upload = new Zend_File_Transfer_Adapter_Http(); 

$upload->getValidator('Upload')->setMessages(array(
    Zend_Validate_File_Upload::INI_SIZE  => "'%value%' adlı dosya çok büyük", 
    Zend_Validate_File_Upload::FORM_SIZE  => "'%value%' adlı dosya çok büyük", 
    Zend_Validate_File_Upload::PARTIAL  => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::NO_FILE  => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::NO_TMP_DIR  => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::CANT_WRITE  => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::EXTENSION  => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::ATTACK   => "'%value%' adlı dosya yüklenemedi", 
    Zend_Validate_File_Upload::FILE_NOT_FOUND => "'%value%' adlı dosya bulunamadı", 
    Zend_Validate_File_Upload::UNKNOWN  => "'%value%' adlı dosya yüklenemedi" 
)); 
2

messages選項設置爲數組,並使用驗證器中的錯誤消息常量覆蓋消息。下面是電子郵件地址的例子:

$element->addValidator('EmailAddress', false, array(
    'messages' => array(
     Zend_Validate_EmailAddress::INVALID_FORMAT => "'%value%' is not a valid email address. Example: [email protected]", 
     Zend_Validate_EmailAddress::INVALID_HOSTNAME => "'%hostname%' is not a valid hostname for email address '%value%'" 
    ) 
)); 

你可以找到那些通過查看源驗證,或者從api docs

1
$file->getValidator('Count')->setMessage('You can upload only one file'); 
$file->getValidator('Size')->setMessage('Your file size cannot upload file size limit of 512 kb'); 
$file->getValidator('Extension')->setMessage('Invalid file extension, only valid image with file format jpg, jpeg, png and gif are allowed.');