嗨,我是Laravel的新手,我有这个简单的问题。我有应用程序,用户可以创建一些文章,也可以上传主图像的文章,它的工作完美。我也想给用户的可能性,为他的文章上传更多的图像。我已经创建了模型(ArticleImage),并添加了Article和ArticleImage之间的关系。并且我创建了表单字段,用于在文章表单内上传多个文件。但我不知道现在如何告诉laravel保存这些路径的所有名称到数据库中,并在公共/images文件夹中存储图像,然后在视图中我可以使用这些图像。我现在是否需要创建ArticleImage控制器和内部控制器来编写该函数,或者我应该在Article控制器内部存储函数中这样做。谢谢每一次的帮助。这里是链接到github-repo(https://github.com/Dabizlja/Laravel-blog)
如果表单以数组形式发送输入
<input name="picures[]" />
在你的ArticleController on save中,你可以使用json类型
$files=[];
$pictures = $request['pictures'];
if (count($pictures) > 0 && $pictures[0] != null) {
foreach ($pictures as $picture) {
$validator = Validator::make([$picture], ['mimes:jpeg,jpg,bmp,png']);
if ($validator->fails()) {
return $validator->messages()->all();
}
$picture->move(public_path() . '/images/', $picture->getClientOriginalName());
array_push($files, $picture->getClientOriginalName());
}
}
$article->images = json_encode($files);
让它回到视图
<?php
foreach ( $images as $file) {
echo '<img src="'asset('/images/' . $file)'"/>';
}
?>
在你的控制器上编辑记得解码json
$files = json_decode($article->images);
要删除一张图片,你必须遍历数组并以同样的方式删除它。
可能
$article->articleImages()->saveMany($images);
希望这能解决你的问题