[英]Laravel - Backpack multi images showing on front-end
I'm using Backpack for my Laravel project.我正在为我的 Laravel 项目使用背包。 And this is my code for image upload: My
ImageCrudController
:这是我的图片上传代码:我的
ImageCrudController
:
public function setup()
{
/*
|--------------------------------------------------------------------------
| CrudPanel Basic Information
|--------------------------------------------------------------------------
*/
$this->crud->setModel('App\Models\Image');
$this->crud->setRoute(config('backpack.base.route_prefix') . '/image');
$this->crud->setEntityNameStrings('image', 'images');
$this->crud->setColumns(['images']);
$this->crud->addField([
'name' => 'images',
'label' => 'Images',
'type' => 'upload_multiple',
'upload' => true,
//s'disk' => 'uploads' // if you store files in the /public folder, please ommit this; if you store them in /storage or S3, please specify it;
]);
/*
|--------------------------------------------------------------------------
| CrudPanel Configuration
|--------------------------------------------------------------------------
*/
// TODO: remove setFromDb() and manually define Fields and Columns
//$this->crud->setFromDb();
// add asterisk for fields that are required in ImageRequest
$this->crud->setRequiredFields(StoreRequest::class, 'create');
$this->crud->setRequiredFields(UpdateRequest::class, 'edit');
}
And this is my App\Models\Image
model:这是我的
App\Models\Image
model:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;
class Image extends Model
{
use CrudTrait;
/*
|--------------------------------------------------------------------------
| GLOBAL VARIABLES
|--------------------------------------------------------------------------
*/
protected $table = 'images';
protected $primaryKey = 'id';
// public $timestamps = false;
// protected $guarded = ['id'];
protected $fillable = ['images'];
// protected $hidden = [];
// protected $dates = [];
/*
|--------------------------------------------------------------------------
| FUNCTIONS
|--------------------------------------------------------------------------
*/
public function setImagesAttribute($value)
{
$attribute_name = "images";
$disk = config('backpack.base.root_disk_name');;
$destination_path = "public/uploads";
$this->uploadMultipleFilesToDisk($value, $attribute_name, $disk, $destination_path);
// return $this->{$attribute_name}; // uncomment if this is a translatable field
}
protected $casts = [
'images' => 'array'
];
}
Now I'm trying to show those images on my front-end.Just to show all images for that post or to show [0]
image from array.Here is my code for that:现在我正在尝试在我的前端显示这些图像。只是显示该帖子的所有图像或显示数组中的
[0]
图像。这是我的代码:
@foreach($images as $image)
@foreach (json_decode($image->images) as $photo)
<img src="uploads/{{$photo}}" style="width:50%" />
@endforeach
@endforeach
but it is showing me this error:但它向我显示了这个错误:
json_decode() expects parameter 1 to be string, array given
What I'm doing wrong?我做错了什么?
I'm not sure but I think that you don't need to use json_decode
the images
attribtue from your model is already casted to array.我不确定,但我认为您不需要使用
json_decode
的images
属性已经转换为数组。
So you can try to loop $image->images because it is already an array所以你可以尝试循环 $image->images 因为它已经是一个数组
2 things: 2件事:
1- you don't need need to json_decode() 2- I think (based on what you provided) that you should replace 1-您不需要 json_decode() 2-我认为(根据您提供的内容)您应该替换
@foreach($images as $image)
@foreach (json_decode($image->images) as $photo)
<img src="uploads/{{$photo}}" style="width:50%" />
@endforeach
@endforeach
with和
@foreach($images as $image)
<img src="uploads/{{$image}}" style="width:50%" />
@endforeach
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.