Функция взрыва Laravel на массиве изображений - PullRequest
0 голосов
/ 25 ноября 2018

Как я могу сделать это функцией взрыва, используя массив изображений?Я получаю сообщение об ошибке:

implode (): неверные аргументы переданы

Мой контроллер:

    public function store(Request $request)
{
    $this->validate($request, [
        'promotion_image' => 'required'
    ]);

    if ($request->has('promotion_image'))
    {   
        //Handle File Upload

        $promotion = [];
        foreach ($request->file('promotion_image') as $key => $file)
        {
            // Get FileName
            $filenameWithExt = $file->getClientOriginalName();
            //Get just filename
            $filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
            //Get just extension
            $extension = $file->getClientOriginalExtension();
            //Filename to Store
            $fileNameToStore = $filename.'_'.time().'.'.$extension;
            //Upload Image
            $path = $file->storeAs('public/promotion_images',$fileNameToStore);
            array_push($promotion, $fileNameToStore);
        }

        $fileNameToStore = serialize($promotion);
    }
    else
    {
        $fileNameToStore='noimage.jpg';
    }

    foreach ($promotion as $key => $value) {
        $promotionImage = new Promotion;
        $promotionImage->promotion_image = implode(' , ',$value);
        $promotionImage->save();
    }
    return redirect('/admin/airlineplus/promotions')->with('success', 'Image Inserted');
}

Мой взгляд:

 @foreach($promotions as $promotion)
           <tr>  

      //HERE IS WHERE THE IMAGE ARE VIEWED      <th><img src="{{ asset('storage/promotion_images/' . $promotion->promotion_image) }}" style="width:50px;height:50px;"></th>
            <th><a href="/admin/airlineplus/promotions/{{ $promotion->id  }}/edit" class="fa fa-edit btn btn-primary btn-lg"></a></th>

         </tr> 
         @endforeach

1 Ответ

0 голосов
/ 25 ноября 2018

Если я вас правильно понял, попробуйте без цикла foreach

if (count($promotion)) {
    $implodedPromotion = implode(' , ', $promotion);
    $promotionImage = new Promotion;
    $promotionImage->promotion_image = $implodedPromotion;
    $promotionImage->save();

    return redirect('/admin/airlineplus/promotions')->with('success', 'Image Inserted');
}

return redirect('/admin/airlineplus/promotions')->with('error', 'Something went wrong.');

Дополнительно :

Если у вас есть это значение в вашем представлении и вы хотите показать эти изображения, вы должны сделать следующее:

@foreach($promotions as $promotion)
    @php
        $imagesImploded = $promotion->promotion_image;
        $imagesExploded = explode(',', $imagesImploded);
    @endphp
    <tr>
        @foreach($imagesExploded as $image)  
        <th><img src="{{ asset('storage/promotion_images/' . trim($image)) }}" style="width:50px;height:50px;"></th>
        @endforeach
        <th><a href="/admin/airlineplus/promotions/{{ $promotion->id  }}/edit" class="fa fa-edit btn btn-primary btn-lg"></a></th>
    </tr> 
@endforeach
...