嗨,我是Laravel的新人,我就是这个简单的问题。我有应用程序,用户可以创建一些文章,也可以上传该文章的主图像,它的工作完美。我还想让用户为他的文章上传更多图像。我已经创建了模型(ArticleImage)并添加了Article和ArticleImage之间的关系。我创建了表单字段,用于在文章表单中上传多个文件。但我现在还不知道如何告诉laravel将这些路径的所有名称保存到数据库中并将图像存储在public / images文件夹中,而不是后来在视图中我可以使用这些图像。我现在需要创建ArticleImage控制器和内部控制器来编写该功能,或者我应该在商店功能内的Article控制器内执行此操作。 Tnx提前为每一个帮助。 这是github-repo(https://github.com/Dabizlja/Laravel-blog)
的链接答案 0 :(得分:1)
如果表单将输入作为数组发送。
<input name="picures[]" />
在保存的ArticleController中,您可以使用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);
要删除图片,您必须通过数组并以相同的方式将其删除。
希望这适合你。
答案 1 :(得分:0)
可能是
$article->articleImages()->saveMany($images);
希望这可以解决您的问题