Why does your form not contain proper tags?
Where is the submit button?
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Why does your form not contain proper tags?
Where is the submit button?
Updated it, '(' and ')' for display reasons as < >. @snapey
It doesn't help. Just paste the actual code and put ``` on their own lines before and after. HTML is displayed fine here:
<div class="content">
<div class="title m-b-md">
Template Mailer
</div>
Ok. Thanks @Snapey
The problem is the if condition around the foreach loop. Without it, the files will be listed. @Snapey
Now that I create a product with:
foreach ($request->images as $image) {
$image = $request->file('images');
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('uploads/business/products/'. $filename );
Image::make($image)->resize(812, null, function ($constraint){$constraint->aspectRatio();})->save($location);
}
$product->pictures()->save($picture);
it results in Call to a member function getClientOriginalExtension() on null
it results in Call to a member function getClientOriginalExtension() on null
Comment out this line
$image = $request->file('images');
and sometime do that dd() so you can see what you are working with
because you don't have uploaded files, just file names..
Still looking for that dd()
foreach ($request->images as $image) {
dd($image)
}
only gets the first selected image. @Snapey
Is that what I suggested?
dd is DIE and dump. so on the first time around the loop it DIES
also, still looking for that form code...
foreach ($request->images as $image) {
dump($image);
}
die;
Shows the list of the files, but what's the difference. When i put dd($image); outside the brackets it'll show the last file name of the loop. @snapey
Which form code?
Do you remember this
dd($request->images); and post the result
All we are looking to establish is if you are getting instance of UploadedFile object
and I suggested you post the form as it is and not with you changing all the Brackets
Sorry, I forgot @Snapey
array:3 [▼
0 => "blueboxtest.jpg"
1 => "wfp.jpg"
2 => "mmm.jpg"
]
<form enctype="multipart/form-data" action="/success" method="POST">
<h1 class="qsetp">Image</h1>
<input type="file" name="images[]" multiple="true" />
<hr>
<h3 class="qsetp">Title</h3>
<div class="container" id="editedit11">
<div class="form-group{{ $errors->has('title') ? ' has-error' : ''}}"">
<input type="text" name="title" class="form-control" id="editfields22" placeholder="Title">
@if ($errors->has('title'))
<span class="help-block">{{ $errors->first('title') }}</span>
@endif
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default" style="margin-top: 20px; color: white;" id="button-profile">Create Product</button>
</div>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
I replicated your code, pointed it at a controller and put
dd($request->images); at the top
This is what I see.
Puzzled why you only see filenames. What is going on in the rest of the controller?
array:3 [▼
0 => UploadedFile {#198 ▶}
1 => UploadedFile {#204 ▶}
2 => UploadedFile {#205 ▶}
]
This is the whole controller @Snapey :
public function postProduct(Request $request){
$this->validate($request, [
'title'=> 'max:140',
'brand'=> 'max:140',
'sku'=> 'max:140',
'description'=> 'max:140',
'price'=> 'max:140',
]);
$product = Auth::user()->products()->create([
'business_id' => auth()->user()->id,
'title' => $request->title,
'brand' => $request->brand,
'sku' => $request->sku,
'description' => $request->description,
'price' => $request->price,
]);
foreach ($request->images as $image) {
dd($request->images);
}
$product->pictures()->save($picture);
return redirect()
->route('products.create')
->with('info', 'Your product has been created.');
}
}
Can't see anything wrong there.
Try with your dd at the top of the request.
How come your form posts to '/success' but the method is postProduct ?
Do you submit the form with traditional post or are you submitting with ajax
Solution:
Controller:
foreach ($request->images as $image) {
$business = Auth::user();
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('uploads/'. $filename );
Image::make($image)->resize(812, null, function ($constraint){$constraint->aspectRatio();})->save($location);
$pictures[] = new Picture(['product_image' => $filename]);
}
$product->pictures()->saveMany($pictures);
Picture.php
public function product(){
return $this->belongsTo(Product::class);
}
Product.php
public function pictures(){
return $this->hasMany(Picture::class);
}
Pictures Table:
Schema :: create ('pictures', function(Blueprint $table){
$table->increments('id');
$table->unsignedInteger('product_id'); //
$table->string('product_image')->default('productdefault.jpg');
$table->timestamps();
});
Great. How did you manage to get the images? I can't see anything here that would resolve the problem?
Update above @Snapey
Please or to participate in this conversation.