Пропуск проверки для одного файла в Zend_File_Transfer - PullRequest
0 голосов
/ 14 июня 2011

Для создания бизнеса я загружаю 5 изображений вместе с CSV-файлом.Я использовал следующие Zend валидаторы

$upload = new Zend_File_Transfer();
        $upload->addValidator('Count', false, array('min' =>1, 'max' => 6))
               ->addValidator('Size', false, array('max' => '1Mb'))
               ->addValidator('ImageSize', false, array('minwidth' => 50,
                                                        'maxwidth' => 1000,
                                                        'minheight' => 50,
                                                        'maxheight' => 1000));

Когда я загружаю CSV, я получаю сообщение об ошибке, указывающее, что ImageSize не обнаружен.Есть ли способ пропустить валидатор ImageSize для файла .csv?

Ответы [ 2 ]

1 голос
/ 31 августа 2011

здесь, пример, который проверяет первое изображение для высоты 435 пикселей по ширине 175 пикселей и все остальные оставшиеся изображения для высоты 200 пикселей по ширине 200 пикселей.

$targetPath = $this->registry->DOC_ROOT.'/public/uploads/images/campersite_user_photo/';

            if(!is_dir($targetPath))
            {
                mkdir($targetPath,'0777');
            }

            $adapter->setDestination($targetPath);

            $first = true;
            $filecheck = '';

            if(isset($asAdminVal['admin_role_id']) && ($asAdminVal['admin_role_id'] == '1' || $asAdminVal['admin_role_id'] == '2'))
            {
                $photoCount = Model_TblCampersiteUserPhotos::getCamperPhotoCount($this->view->snCampId);

                if($photoCount == 0)
                {
                    $j = 1;

                    foreach ($adapter->getFileInfo() as $fields => $info) 
                    {
                        if($info['name'] != '' && $first == true)
                        {
                            $filecheck = $fields;
                        }

                        if($filecheck != '' && $first == true)
                        {
                            $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 435,'minheight' => 175,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_camper_banner_image_file_too_width_height_less'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_camper_banner_image_file_too_width_height_less'))),$fields);
                            $first = false;
                        }
                        else
                        {
                            $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                        }
                        $fileInfo[$j] = $info;
                        $j++;
                    }
                }
                else
                {
                    $j = 1;
                    foreach ($adapter->getFileInfo() as $fields => $info) 
                    {
                        $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                        $fileInfo[$j] = $info;
                        $j++;
                    }   
                }
            }
            else
            {
                $j = 1;
                foreach ($adapter->getFileInfo() as $fields => $info) 
                {
                    $form->photo_path->addValidator('ImageSize', false,array('minwidth' => 200,'minheight' => 200,'messages' => array('fileImageSizeWidthTooSmall' => $this->translate->_('msg_file_too_small'),'fileImageSizeHeightTooSmall' => $this->translate->_('msg_file_too_small'))),$fields);
                    $fileInfo[$j] = $info;
                    $j++;                   
                }
            }

Для подтверждения формы напишите код ниже.

if($form->isValid($formData))
{

}
0 голосов
/ 15 июня 2011

И я разобрался, как это сделать !!

$upload = new Zend_File_Transfer();
    $files = $upload->getFileInfo();
    foreach ($files as $fields => $contents)
    {
        if ($fields!= 'filename6')  -- Skipping the validation for csv file
        {
            $upload->addValidator('Count', false, array('min' =>1, 'max' => 6),$fields)
                   ->addValidator('Size', false, array('max' => '1Mb'),$fields)
                   ->addValidator('ImageSize', false, array('minwidth' => 50,
                                                            'maxwidth' => 1000,
                                                            'minheight' => 50,
                                                            'maxheight' => 1000),$fields);
        }
        elseif ($fields == 'filename6') -- To validate only csv file
        {
            $upload->addValidator('Extension', false, 'csv', $fields)
                   ->addValidator('Size', false, array('max' => '1Mb'),$fields);
        }
    }          
...