Отображение данных JSON для просмотра в виде строки или массива - PullRequest
0 голосов
/ 04 ноября 2018

Новичок в Laravel и чувствую, что мне здесь не хватает чего-то важного. Я загружаю и сохраняю несколько файлов в папку и сохраняю массив имен изображений в базу данных (достаточно просто). В настоящее время сохраняются имена изображений в формате json_encode(), чтобы они форматировались примерно так ["kittyTest.jpeg","kitty_2.jpeg","kitty_3.jpeg"]. Поэтому, когда я пытаюсь распечатать их в виде, я получаю их в формате json и пытаюсь отобразить их в формате массива или каким-то образом использовать имя файла для исходного изображения. Любая помощь или руководство будет высоко ценится.

Контроллер

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Form;
use DB;

class FormController extends Controller
{
 public function index()
{
    $images = DB::select('select * from forms');

    //dd(json_decode($images[0]->filename));

    return view('index', ['images'=> $images]);
}

public function create()
{
    return view('create');
}

public function store(Request $request)
{
    $this->validate($request, [
        'filename' => 'required',
        'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);

    if ($request->hasFile('filename')) {
        foreach ($request->file('filename') as $image) {
            $name = $image->getClientOriginalName();
            $image->move(public_path().'/images/', $name);
            $data[] = $name;
        }
    }

    $form = new Form();
    $form->filename = json_encode($data);
    $form->save();

    return back()->with('success', 'Your images have been uploaded');
}

}

Просмотр

<body>
<div class="container">


<h3 class="jumbotron">Laravel Multiple File Upload</h3>

<p>Here are the images we have in the database</p>

<ul class="list-group">
@foreach ($images as $image)
    <li class="list-group-item">
        {{ $image->filename }}
    </li>
@endforeach
</ul>
</div>


</body>

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018
<ul class="list-group">
@foreach ($images as $image)
    @php $image_array = json_decode($image->filename,true); @endphp
    @foreach ($image_array as $img)
     <li class="list-group-item">

        {{ $img }}
     </li>
    @endforeach
@endforeach
</ul>
try this and let me know
0 голосов
/ 04 ноября 2018

В вашем контроллере используйте array_map для json_decode каждого имени файла изображения, а затем используйте второй foreach в вашем файле просмотра.

Контроллер

public function index()
{
    $images = DB::select('select * from forms');

    array_map(function($a) { 
        $a->filename = json_decode($a->filename); 
        return $a; 
    }, $images);

    return view('index', compact($images)); // you can use compact function here
}

View

<ul class="list-group">
@foreach ($images as $image)
    <li class="list-group-item">
        @foreach ( $image->filename as $file)
        {{ $file }}
        @endforeach
    </li>
@endforeach
</ul>

Редактировать: Вы также можете попробовать приведение к массиву , тогда вам не нужно беспокоиться о его отображении в файле контроллера.

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