如何使用php for循环创建FilePond实例,并使用插件

时间:2019-05-01 13:12:57

标签: javascript php filepond

我想使用php for循环通过FilePond创建一些文件输入。

每个实例都需要有自己的唯一URL,并使用启动的插件。尽管插件似乎没有被使用,但我已经可以实际上传文件了。

<?php
foreach ($objArray as $value) {
    $inputNumber2++;
?>
    <input name="input_<?= $inputNumber2; ?>_images[]" id="input_<?= $inputNumber2; ?>_images" class="filepond" type="files" multiple />
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            window['input<?= $inputNumber2; ?>Images'] = FilePond.create(
                document.querySelector('#input_<?= $inputNumber2; ?>_images'),
                {
                    server: {
                        url: '<?= Config::get('URL'); ?>',
                        process: 'upload/images/input_<?= $inputNumber2; ?>_images',
                        revert: 'upload/revert',
                        load: 'files/',
                    },
                    <?php 
                    if (isset($value->imageArray) && count($value->imageArray) > 0) {
                        echo 'files: [';
                        foreach ($value->imageArray as $imageName) {
                            echo '{
                                source: "'.$imageName.'",
                                options: {
                                    type: "local",
                                    file: {
                                        name: "'.$imageName.'",
                                        type: "image/jpeg"
                                    }
                                }
                            },';
                        }
                        echo '],';
                    }
                    ?>
                }
            );
        });
    </script>
<?php } ?>
...
<script>
document.addEventListener('DOMContentLoaded', function() {
    FilePond.registerPlugin(
        FilePondPluginFileValidateType,
        FilePondPluginImageExifOrientation,
        FilePondPluginImagePreview,
        FilePondPluginImageTransform,
        FilePondPluginImageCrop,
        FilePondPluginImageResize
    );
    FilePond.setOptions({
        acceptedFileTypes: ['image/*'],
        labelIdle: 'Add images or <span class="filepond--label-action"> Browse </span>',
        imagePreviewMaxHeight: 100,
        imagePreviewZoomFactor: 1,

    });
});
</script>

我可能做错了-我应该怎么做?

此外,它正在拾取并使用自定义标签,因此可以获得一些设置。

1 个答案:

答案 0 :(得分:0)

此行:

document.querySelector('#input_<?= $inputNumber2; ?>_images')

返回带有id input_<?= $inputNumber2; ?>_images的字段。但是,您仅将name属性分配给了输入字段。我怀疑将id属性添加到输入中可以解决问题。

或者您可以将选择器更改为:

document.querySelector('input[name="input_<?= $inputNumber2; ?>_images"]')