Zend форма и динамическая загрузка файлов - PullRequest
0 голосов
/ 10 апреля 2010

Здравствуйте, я пытаюсь создать форму с Zend_Form, которая позволит моему пользователю загружать на мой сайт неопубликованное количество файлов, ведь это делается с помощью javascript.

Что-то вроде

<script type="text/javascript">
$(document).ready(function(){
    var image_uploade_i = 0;
    $('#upload_more').click(function() {
        image_uploade_i++;
        $('#upload_list').append('<div id="image_uploade_id_'+image_uploade_i+'" style="display: none;"><input type="file" name="image[]" /><br /></a>');
        $('#image_uploade_id_'+image_uploade_i).slideDown('slow');
    });
});
</script>
<?=$this->translate('Add images')?>
<form action="" method="post" enctype="multipart/form-data">
    <div id="upload_list">
        <input type="file" name="image[]" /><br />
        <input type="file" name="image[]" /><br />
        <input type="file" name="image[]" /><br />
    </div>
    <a href="#" id="upload_more"><?=$this->translate('Upload another image')?></a><br />
    <input type="submit" name="image_uploade" value="<?=$this->translate('Upload images')?>" />
</form>

Но я не могу выяснить, как я могу создать что-то подобное с Zend_From, единственная причина, по которой я хочу использовать Zend_Form для этого файла, заключается в проверке файлов загрузки.

    $element = new Zend_Form_Element_File('image');
    $element->setRequired(true)
            ->setLabel('Profile image')
            ->setDestination($store)
            ->setValueDisabled(true)
            ->addValidator(new Zend_Validate_File_ImageSize(array(
                                        'minheight' => 100, 'minwidth' => 150,
                                        'maxheight' => 1920, 'maxwidth' => 1200)))
            // File must be below 1.5 Mb
            ->addValidator(new Zend_Validate_File_FilesSize(array('max' => 1572864)))
            ->addValidator(new Zend_Validate_File_IsImage());

Если бы кто-нибудь мог помочь мне настроить это, я был бы очень доволен: D

1 Ответ

1 голос
/ 10 апреля 2010
$this->setAttrib('enctype', 'multipart/form-data');
$this->addElement('file', 'files', array(
    'label'         => 'Pictures',
    'validators'    => array(
        array('Count', false, array('min'=>1, 'max'=>3)),
        array('Size', false, 102400),
        array('Extension', false, 'jpg,png,gif')
    ),
    'multiFile'=>3,
    'destination'=>APPLICATION_PATH . '/tmp'
));

, поэтому попробуйте setMultiFile и, возможно, используйте валидатор Count, чтобы сохранить ограничение.

Я скомпилировал этот пример из следующего источника: http://framework.zend.com/manual/en/zend.form.standardElements.html#zend.form.standardElements.file

...