Reputation: 2725
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
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
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