Search code examples
phplaravelphpmyadminlaravel-bladecrud

Displaying image in foreach blade.php


So, I am trying to display image, here is how i create my data

public function create_supplier(Supplier $request)
    {
        $validatedData = $request->validated();

        $extension = $request->file('logoimg')->getClientOriginalExtension();
        $filename = $request->supplier_name . '.' . $extension;
        $request->file('logoimg')->storeAs('/storage/supplier_logo/', $filename);

        $supplier = ModelsSupplier::create([
            'supplier_name' => $request->supplier_name,
            'address' => $request->address,
            'email' => $request->email,
            'phone_number' => $request->phone_number,
            'logoimg' => $request->logoimg
        ]);

        return response()->json(['message' => 'Supplier successfully added', 'supplier' => $supplier]);
    }

Now, I want to display the logo img in blade.php

<tbody>
                @foreach($suppliers as $supplier)
                <tr>
                    <td>{{$supplier->id}}</td>
                    <td><img src="{{ asset('storage/supplier_logo/' . $supplier->logoimg) }}" alt="test"></td>
                    <td>{{$supplier->supplier_name}}</td>
                    <td>{{$supplier->address}}</td>
                    <td>{{$supplier->email}}</td>
                    <td>{{$supplier->phone_number}}</td>
                </tr>
                @endforeach
            </tbody>

it has successfully display the supplier_name, address, etc. but it shows the alt text that is "test". the file has also been successfully added to my storage/supplier_logo.

however, this is the value in my phpmyadmin, C:\xampp\tmp\php15CC.tmp

please do help, thank you!


Solution

  • you need to save image url that saved on disk into your database , not the $request->logoimg .

    storeAs() return the file path

    $filepath = $request->file('logoimg')->storeAs('/storage/supplier_logo/', $filename);
    
    $supplier = ModelsSupplier::create([
        'supplier_name' => $request->supplier_name,
        'address' => $request->address,
        'email' => $request->email,
        'phone_number' => $request->phone_number,
        'logoimg' => $filepath
    ]);
    

    i dont test the code , maybe you need some debug