سلام دوستان
من یک فرم دارم که یک فیلد تصاویر داره و باید تصویر اپلود کنم. این تصاویر به خوبی آپلود و ریسایز می شوند اما وقتی میخوام اون فرم رو ویرایش کنم و نوع سایزیکی از تصویر رو تغییر بدم مثلا اگر 300 هست به 600 بزارم رو نمیدونم چطوری باید ذخیره کنم؟؟؟؟؟ اگر تک عکس بود اون اینپوت رو بصورت$inputs['imagesThumb']
قرار میدادم حل میشد اما الان چون چند تا تصویر دارم نمیدونم چیکار باید انجام بدم.
: Controller
public function update(Request $request, Form $form)
{
if($request->hasfile('images'))
{
foreach($request->file('images') as $file)
{
$file = $this->UploadImage($file);
$result[] = $file;
}
$inputs['images'] = $result;
}else {
$inputs['images'] = $form->images;
$inputs['images']['thumb'] = $inputs['imagesThumb'];// این قسمت رو مشکل دارم
}
unset($inputs['imagesThumb']);
$form->update($inputs);
return back();
}
: edit.blade.php
<div class="col-sm-12 mb-3">
<label for="images" class="form-control-label">تصاویر :</label>
<div class="col-sm-12 mb-3">
@if($form->images == null)
<div class="alert alert-secondary alert-dismissible fade show" role="alert">
<span class="alert-icon"><i class="ni ni-image"></i></span>
<span class="alert-text">کاربر تصویری برای فرم خود را بارگذاری نکرده است</span>
</div>
@else
@foreach($form->images as $images)
<div class="col-sm-12">
<div class="row">
@foreach($images['images'] as $key => $image)
<div class="col-sm-2">
<label class="control-label">
{{ $key }}
<input type="radio" name="{{$images['thumb']}}" value="{{ $image }}" {{ $images['thumb'] == $image ? 'checked' : '' }} />
<a href="{{ $image }}" target="_blank"><img src="{{ $image }}" width="100%"></a>
</label>
</div>
@endforeach
</div>
</div>
@endforeach
@endif
</div>
<div class="custom-file">
<input type="file" class="custom-file-input @error('images') is-invalid @enderror" name="images[]" id="images" multiple>
@error('images')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
<label class="custom-file-label" for="images">تصایر را وارد کنید</label>
</div>
</div>
در داخل کنترلرم با dd($request->all()) لاگ گرفتم و وقتی یک سایز دیگری از تصویر رو انتخاب میکنم خروجیش به این شکله:
array:12 [▼
"_token" => "JCVS4QF5lXTTno21vdVQjExA0vszfqblK50fYIDa"
"_method" => "patch"
"title" => "تراکتور رومانی"
"/storage/uploads/images/300_2020_12_25_26b48a491115ed63b660wXkDI5mt_1_png" => "/storage/uploads/images/300_2020_12_25_26b48a491115ed63b660wXkDI5mt.1.png"
"/storage/uploads/images/300_2020_12_25_12567efe48d699fd052ewXkDI5mt_2_png" => "/storage/uploads/images/600_2020_12_25_12567efe48d699fd052ewXkDI5mt.2.png"
"/storage/uploads/images/300_2020_12_25_6da518d9752ad0e28aaewXkDI5mt_4_png" => "/storage/uploads/images/300_2020_12_25_6da518d9752ad0e28aaewXkDI5mt.4.png"
"/storage/uploads/images/300_2020_12_25_65509804bda5c9c381d6wXkDI5mt_png" => "/storage/uploads/images/300_2020_12_25_65509804bda5c9c381d6wXkDI5mt.png"
]
@mhyeganeh @hosseinshirinegad98 @nimageneral @SobhanDadkhah @endworld @hesammousavi
سلام
به جای ذخیره چند تصویر یک تصویر ذخبره کن و زمان نمایش با کیفیت ها که نیاز داری نمایش بده
این کار رو با کتاب خانه GD در php می تونی انجام بدی
سلام @abdgod
ممنونم بابت پاسخگویی تون
روشی که شما فرمودید بهینه نیست و من اگر بخواهم هر زمان که تصویر نیاز داشته باشم و تصاویر رو ریسایز کنم پردازش های زیادی باید انجام بدم و به سرور فشار خواهد اومد پس بهترهه یکبار مراحل ریسایز صورت بگیرهه و در دیتابیس ذخیره بشه و هر زمان که نیاز بود اون عکس رو از دیتابیس فراخوانی کنم و نمایش بدم در این روش تصاویر بصورت جیسون در فیلد images دیتابیس ذخیره میشن
درود بر شما
در تصویری که فرستادید radio دارید
خوب یک name برای radio با value های متفاوت در نظر بگیرید و زمانی که ارسال میشه مقدار مورد نظر رو بگیرید و واکشی کنید و ذخیره سازی انجام بدید !
@hesammousavi ممنونم اقای موسوی بابت راهنمایی تون
همانطور که گفتید سمت فرانت برای اسم ها مقادیر خود تصاویر رو ست کردم.که خروجی ریکوست بدین صورت هست. و دقیقا مثل تصویر سوال بالا، برای عکس ردیف دومی سایز 600 رو انتخاب کردم. حالا سمت بکند چطوری باید پیمایش کنم که مقادیر اون تصویر از ورودی رو جای همون thumb ذخیره کنم؟
array:4 [▼
"_token" => "JCVS4QF5lXTTno21vdVQjExA0vszfqblK50fYIDa"
"_method" => "patch"
"title" => "تراکتور رومانی"
"imagesThumb" => array:4 [▼
"/storage/uploads/images/300_2020_12_25_26b48a491115ed63b660wXkDI5mt_1_png" => "/storage/uploads/images/300_2020_12_25_26b48a491115ed63b660wXkDI5mt.1.png"
"/storage/uploads/images/300_2020_12_25_12567efe48d699fd052ewXkDI5mt_2_png" => "/storage/uploads/images/600_2020_12_25_12567efe48d699fd052ewXkDI5mt.2.png"
"/storage/uploads/images/300_2020_12_25_6da518d9752ad0e28aaewXkDI5mt_4_png" => "/storage/uploads/images/300_2020_12_25_6da518d9752ad0e28aaewXkDI5mt.4.png"
"/storage/uploads/images/300_2020_12_25_65509804bda5c9c381d6wXkDI5mt_png" => "/storage/uploads/images/300_2020_12_25_65509804bda5c9c381d6wXkDI5mt.png"
]
]
یک کدی سمت بکند نوشتم ولی نمیدونم چطوری مقادیر اون تصویر از ورودی رو جای همون thumb ذخیره کنم..!!!!
// پیمایش تصاویر تامب دیتابیس
foreach ($form->images as $image){
$thumbDB[] = $image['thumb'];
}
array_replace($thumbDB, array_intersect_key(array_diff(array_values($inputs['imagesThumb']),$thumbDB), $thumbDB));
توی قسمت دوم مقدار اینپوتی که تغییر کرده رو با مقدار تامب دیتابیس مقایسه میکنم و اگر تغییر کرده بود جایگزینش میکنم که خروجیش بدین صورت میشه اما توی ذخیره کردنش مشکل دارم البته ممکنه روش بهتری هم سراغ داشته باشید
array:4 [▼
0 => "/storage/uploads/files/2020/images/300_2020_12_25_26b48a491115ed63b660wXkDI5mt.1.png"
1 => "/storage/uploads/files/2020/images/600_2020_12_25_12567efe48d699fd052ewXkDI5mt.2.png"
2 => "/storage/uploads/files/2020/images/300_2020_12_25_6da518d9752ad0e28aaewXkDI5mt.4.png"
3 => "/storage/uploads/files/2020/images/300_2020_12_25_65509804bda5c9c381d6wXkDI5mt.png"
]
updated:
@ali.bayat @behzad.azizan @juza66 @abedim910 دوستان شما نظری ندارید؟؟؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟