使用动态输入字段更新图像 - Laravel

时间:2017-07-21 20:48:49

标签: php image laravel dynamic updating

我正在使用Laravel创建一个cms,我可以在其中动态添加文件输入和存储图像。

这是我的HTML和控制器来存储图像:

<div v-for="file in files">
    <div class="textareaBlock">
        <label></label>
        <input type="file" name="image[]">
    </div>
</div>

控制器:

    $fileRequests = request()->file('image');

    if($fileRequests != NULL){
        foreach ($fileRequests as $fileRequest) {
            $fileRequest->store('images', 'public');
            $file = new File;
            $file->file = $fileRequest->hashName();
            $page->files()->save($file);
        }
    }

如果我没有更新所有图片,我现在无法更新图片。如果我上传了1张图片,我就会收到错误:未定义的偏移1.这是因为我只上传了2个输入字段中的1个,因此它只获得2个请求中的1个。如果我上传了2个输入字段中的2个,那么它可以正常工作。

这是更新图像的代码:

    $files = File::all()->where('page_id', $page->id);
    $fileRequests = request()->file('image');

    $i=0;
    foreach ($files as $file) {

        $fileRequests[$i]->store('images', 'public');
        $file->file = $fileRequests[$i]->hashName();
        $i++;

        $page->files()->save($file);

    }

所以我的问题是:如果我没有每次更新所有内容,我怎么能解决这个问题呢?或者有更好的方法来做到这一点吗? (我可以想象)

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试使用:

if (isset($fileRequests))

这应检查图像数组是否设置,而不是检查数组是否存在 - 未定义的偏移量1通知您数组元素当前不存在,而不是设置。否则,当只有一个图像时,您需要例外。