user92481
user92481

Reputation: 195

Laravel ErrorException: Undefined variable

I am trying to upload a file via axios api troughr Laravel. Below is the controller code but I don't understand why Laravel tell me the variable name on line 24 is undefined. It seems to me the variable is defined...

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

if($request->get('image'))
{
    $image = $request->get('image');
    $name = time().'.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
    \Image::make($request->get('image'))->save(public_path('images/').$name);
}

$image= new FileUpload();
$image->image_name = $name;
$image->save();

return response()->json(['success' => 'You have successfully uploaded an image'], 200);
}

This is the line 24: $image->image_name = $name;

Upvotes: 1

Views: 885

Answers (1)

OMR
OMR

Reputation: 12188

you have to make your variable in higher visibility scope :

public function store(Request $request)
{
    $this->validate($request, [
        'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
 $name=''; // here you define your vaiable
if($request->get('image'))
{
    $image = $request->get('image');
    $name = time().'.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
    \Image::make($request->get('image'))->save(public_path('images/').$name);
}

$image= new FileUpload();
$image->image_name = $name;
$image->save();

return response()->json(['success' => 'You have successfully uploaded an image'], 200);
}

more about variable scope in:

https://phppot.com/php/variable-scope-in-php/

Upvotes: 2

Related Questions