OK I want to simply validate my form. The problem is with Notexists validator. I write special filter which return correct value of filtered file name (I checked), so if filters work before validators why my form success validation in the example case.
Example:
I upload file Audyt dla strony http.doc and in my uploads is file audyt-dla-strony-http.doc My_Filters_Uploader returns: audyt-dla-strony-http.doc, so it seems that my form should fail validation. In fact it shouldnt. Please guys help me.

PHP Code:
//my form file upload element
$kontrolka = new Zend_Form_Element_File('file_name', array(
            
'label' => 'Dodaj plik:',
            
'destination' => realpath(APPLICATION_PATH '/../public/uploads'),
            
'required' => true,
            
'filters' => array(new My_Filters_Uploader()),
            
'validators' => array(
                array(
'Count'true1),
                array(
'Size'true102400),
                array(
'Db_NoRecordExists'false, array('table' => 'e_exercise','field' => 'file_name')),
                array(
'NotExists'falserealpath(APPLICATION_PATH '/../public/uploads')),
                array(
'Extension'false, array('doc''docx''xls''xlsx''ppt''odt''pdf'))
            ),
        ));


//Filtr My_Filters_Uploader
public function filter($value)
        {
            
$file pathinfo($value);
            
$valueFiltered My_Slugs::string2slug($file['filename']);
            return 
$valueFiltered '.' $file['extension'];
        }

//action in controller
if ($form->isValid($this->getRequest()->getPost())) {
             
                
                
//usuwanie poprzedniego pliku 
                
$fld realpath(APPLICATION_PATH '/../public/uploads'); 
                
$plik $DbTable->getFile($eid);
                
$np realpath($fld '/' $plik);
                if (
file_exists($np) && is_file($np)) 
                   {
                   
chmod($np0777); 
                   
unlink($np);
                   }
                
//usuwanie poprzedniego pliku
                   
                
$data $form->getValues();
                
$data array_merge($data, array('edit_date' => date('Y-m-d')));
                
$obj->setFromArray($data);
                
$obj->save();
                
                
                           
                
                return 
$this->_helper->redirector(
                       
'editexercise',
                       
$this->getRequest()->getcontrollerName(),
                       
$this->getRequest()->getModuleName(),
                       array(
'eid' => $eid,
                             
'id' => $id)
                       );
                 
                
            }

//helpul string2slug function
public static function string2slug($string ''$options = array('encoding' => 'windows-1250'))
    {

        if (!isset(
$options['separator'])) {
            
$options['separator'] = '-';
        }

        if (!isset(
$options['default'])) {
            
$options['default'] = 'undefined';
        }

        if (!isset(
$options['encoding'])) {
            
$options['encoding'] = 'utf-8';
        }

        if (!isset(
$options['case'])) {
            
$options['case'] = 'lower';
        }

        switch (
$options['encoding']) {
        case 
'utf-8':
            
$string My_Pl::utf82ascii($string);
            break;
        case 
'iso-8859-2':
            
$string My_Pl::iso2ascii($string);
            break;

        case 
'windows-1250':
            
$string My_Pl::win2ascii($string);
            break;
        }

        
$string preg_replace('/[^A-Za-z0-9]/'$options['separator'], $string);

        if (isset(
$options['case'])) {
            if (
$options['case'] == 'lower') {
                
$string strtolower($string);
            } else if (
$options['case'] == 'upper') {
                
$string strtoupper($string);
            }
        }

        
$string preg_replace('/' preg_quote($options['separator'], '/') . '{2,}/'$options['separator'], $string);
        
$string trim($string$options['separator']);

        if (isset(
$options['maxlength'])) {
            
$string self::abbr($string$options);
        }

        if (
$string === '') {
            return 
$options['default'];
        } else {
            return 
$string;
        }
    }