YaSh Chaudhary
YaSh Chaudhary

Reputation: 2725

show flash message on validation fails ( image validation ) (laravel)

I want to show a flash message when validation fails. Currently the validation works but the flash message doesn't. I suspect my if condition is wrong

public function update_avatar(Request $request,$username){
  $this->validate($request,[
    'avatar' => 'mimes:jpeg,bmp,png|required'
  ]);
  if($request['avatar']==null){
    \Session::flash('message','Please choose a file first.');
    \Session::flash('alert-class', 'alert-warning'); 
    return redirect()->back();
  }
  if($request->hasFile('avatar')){
    $avatar = $request->file('avatar');
    $filename = time(). '.' . $avatar->getClientOriginalExtension();
    Image::make($avatar)->save('assets/src/uploads/avatars/' . $filename);
    $user = User::where('username', $username)->first();
    $user->avatar = $filename;
    $user->update();
  }
  return redirect()->route('myplace',['username' => $user->username]);
}

EDIT: form code added:

     <form enctype="multipart/form-data" action="{{route('profile',['username'=>$user->username])}}" method="post">


  <input type="file" size="15px" name="avatar"  >

  <button type="submit" name="avatar1" class="col-md-6 col-xs-6 " value="upload" style="margin-top: 20px; width: 78px !important; " >upload</button>
  <input type="hidden" value="{{ csrf_token() }}" name="_token">
  </form>

Upvotes: 1

Views: 1108

Answers (2)

Jaymin Panchal
Jaymin Panchal

Reputation: 2856

Just try to put FlashMessage in else and then try this.

Hope it helps

public function update_avatar(Request $request,$username){
  $validator = Validator::make($request->all(), [
                'avatar' => 'mimes:jpeg,bmp,png|required'
            ]);
  if($validator->fails()){ 
    \Session::flash('message','Please choose a file first.');
    \Session::flash('alert-class', 'alert-warning'); 
    return redirect()->back();
  }
  if($request->hasFile('avatar')){
    $avatar = $request->file('avatar');
    $filename = time(). '.' . $avatar->getClientOriginalExtension();
    Image::make($avatar)->save('assets/src/uploads/avatars/' . $filename);
    $user = User::where('username', $username)->first();
    $user->avatar = $filename;
    $user->update();
  }
  return redirect()->route('myplace',['username' => $user->username]);
}

Upvotes: 1

milo526
milo526

Reputation: 5083

Currently your request fails on the validation.
So either use the validation built in to laravel or use if statements with the flash session.
If your request does not contain an avatar, it will never reach your if statement due too the failed validation.

If you do want to create custom messages in your validation take a look at this link.

Upvotes: 0

Related Questions