2017-01-12 4 views
1

Я хочу показать флеш-сообщение, когда проверка не удалась. В настоящее время валидация работает, но флеш-сообщение не работает. Я подозреваю, что мой, если условие неверноshow flash message on validation failed (проверка изображения) (laravel)

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]); 
} 

РЕДАКТИРОВАНИЕ: код формы добавил:

 <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> 

ответ

1

Просто попробуйте поместить FlashMessage в другое, а затем попробуйте это.

Надеется, что это помогает

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]); 
} 
+0

жаль :(работала техника его подводит –

+0

вы можете оставить свой 'form' код, чтобы проверить его более –

+0

добавил код формы –

0

В настоящее время ваш запрос не на проверку.
Так что либо используйте валидацию, встроенную в laravel, либо используйте инструкции if со вспышкой.
Если ваш запрос не содержит аватара, он никогда не достигнет вашего оператора if из-за слишком неудачной проверки.

Если вы хотите создать персонализированные сообщения в своей валидации, посмотрите на ссылку this.

+0

Я хочу, чтобы показывать только быстрые сообщения –

+0

Затем проверьте с, если заявлением, если аватар включен (как вы уже делаете), и является ли он один из допустимых типов данных – milo526

+0

пытался, но техника его подводит работал :( –