Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证失败时显示flash消息(图像验证)(laravel)_Php_Laravel_Laravel 5.2 - Fatal编程技术网

Php 验证失败时显示flash消息(图像验证)(laravel)

Php 验证失败时显示flash消息(图像验证)(laravel),php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我想在验证失败时显示一条flash消息。 目前验证工作正常,但flash消息不起作用。 我怀疑我的病情是否有问题 public function update_avatar(Request $request,$username){ $this->validate($request,[ 'avatar' => 'mimes:jpeg,bmp,png|required' ]); if($request['avatar']==null){ \Session::f

我想在验证失败时显示一条flash消息。 目前验证工作正常,但flash消息不起作用。 我怀疑我的病情是否有问题

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>

上传

当前,您的请求在验证时失败。
因此,要么使用内置于laravel的验证,要么在flash会话中使用if语句。
如果您的请求不包含化身,那么由于验证失败,它将永远不会到达您的If语句


如果您确实想在验证中创建自定义消息,请查看链接。

只需尝试将
FlashMessage
放在else中,然后尝试此操作

希望能有帮助

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

然后用if语句检查头像是否包括在内(正如您已经做的那样),以及它是否是RouteCollection.php第218行中接受的数据类型MethodNotAllowedHttpException中的一种:您是在使用
ResourceController
还是手动定义了此更新方法?我更改了路由,使其仍然不起作用。更新方法由我们手动定义。