Php laravel 5.2中编辑形式的图像验证

Php laravel 5.2中编辑形式的图像验证,php,validation,laravel,laravel-5.2,laravel-validation,Php,Validation,Laravel,Laravel 5.2,Laravel Validation,我有个问题,请看下面 我有一个编辑用户配置文件部分,我们在其中更新用户帐户,我想检查表中是否没有图像&用户也没有提供图像,然后我们必须验证图像并显示错误。若表中已经存在一个映像,那个么不需要检查映像验证。除了图像验证之外,一切都很好 我正在使用来自验证请求的。下面是我在请求文件中的验证规则 public function rules() { return [ 'user_type' =>'required', 'first_name' =>'r

我有个问题,请看下面

我有一个编辑用户配置文件部分,我们在其中更新用户帐户,我想检查表中是否没有图像&用户也没有提供图像,然后我们必须验证图像并显示错误。若表中已经存在一个映像,那个么不需要检查映像验证。除了图像验证之外,一切都很好

我正在使用来自验证请求的。下面是我在请求文件中的验证规则

public function rules()
{
    return [
        'user_type' =>'required',
        'first_name' =>'required|max:100',
        'last_name' =>'required|max:100',
        'email' =>'required|email|max:100',
        'image' =>'required|image',
        'zip_code' =>'required|numeric|min:5',
    ];
}
我正在使用Laravel 5.2,提前感谢。

请查看:

比如:

  $v->sometimes(['image'], 'required|image', function($input) use ($user)  {
      return $user->notHavingImageInDb();
  });
您也可以使用普通逻辑,如:

public function rules()
{
   $roles = [
            'user_type' =>'required',
            'first_name' =>'required|max:100',
            'last_name' =>'required|max:100',
            'email' =>'required|email|max:100',
            'image' =>'image',
            'zip_code' =>'required|numeric|min:5',
           ];

    if ($user->notHavingImageInDb())
      $rules['image'] = 'required|image';

    return $rules
}
看看:

比如:

  $v->sometimes(['image'], 'required|image', function($input) use ($user)  {
      return $user->notHavingImageInDb();
  });
您也可以使用普通逻辑,如:

public function rules()
{
   $roles = [
            'user_type' =>'required',
            'first_name' =>'required|max:100',
            'last_name' =>'required|max:100',
            'email' =>'required|email|max:100',
            'image' =>'image',
            'zip_code' =>'required|numeric|min:5',
           ];

    if ($user->notHavingImageInDb())
      $rules['image'] = 'required|image';

    return $rules
}

最后,我使用@Amir的帮助找到了解决方案。下面是这个问题的完整解决方案

//将此添加到用户模型中

public function notHavingImageInDb(){
    return (empty($this->image))?true:false;
    //return true;
}
//在请求类中导入用户模型和身份验证类

use App\User;
use Auth;
//从请求中添加此项

public function rules()
    {
        $user = User::find(Auth::id());

        $rules =  [
            'user_type' =>'required',
            'first_name' =>'required|max:100',
            'last_name' =>'required|max:100',
            'email' =>'required|email|max:100',
            'image' =>'image',
            'zip_code' =>'required|numeric|min:5',
        ];

        if ($user->notHavingImageInDb()){
            $rules['image'] = 'required|image';
        }

        return $rules;
    }
现在一切都结束了

在上面的代码中,我们在验证中检查列是否有一些值,如果是,则模型函数返回true,这将使if条件在请求类中处于活动状态,否则if条件保持不活动状态。工作起来很有魅力


谢谢

最后,我在@Amir的帮助下找到了解决方案。下面是这个问题的完整解决方案

//将此添加到用户模型中

public function notHavingImageInDb(){
    return (empty($this->image))?true:false;
    //return true;
}
//在请求类中导入用户模型和身份验证类

use App\User;
use Auth;
//从请求中添加此项

public function rules()
    {
        $user = User::find(Auth::id());

        $rules =  [
            'user_type' =>'required',
            'first_name' =>'required|max:100',
            'last_name' =>'required|max:100',
            'email' =>'required|email|max:100',
            'image' =>'image',
            'zip_code' =>'required|numeric|min:5',
        ];

        if ($user->notHavingImageInDb()){
            $rules['image'] = 'required|image';
        }

        return $rules;
    }
现在一切都结束了

在上面的代码中,我们在验证中检查列是否有一些值,如果是,则模型函数返回true,这将使if条件在请求类中处于活动状态,否则if条件保持不活动状态。工作起来很有魅力


谢谢

您可以创建另一个请求类,并使用artisan将其命名为UserUpdateRequest 像

在这个请求类中,您只需删除'required',它将是这样的

'image' => 'image'
并将UserUpdateResuest设置为更新方法的参数,如

public function update(UserUpdateRequest $userUpdateRequest, $id){
    //
}

您可以创建另一个请求类,并使用artisan将其命名为UserUpdateRequest 像

在这个请求类中,您只需删除'required',它将是这样的

'image' => 'image'
并将UserUpdateResuest设置为更新方法的参数,如

public function update(UserUpdateRequest $userUpdateRequest, $id){
    //
}

谢谢兄弟的回复。但我不想要默认的图像验证,我只想要在数据库中没有图像并且用户也不提供图像的情况下进行验证。所以我不这么认为,我们为图像添加了必要的规则。除此之外,我还需要在哪里添加以下代码$v->有时['image'],'required | image',函数$input use$user{return$user->notHavingImageInDb;};只需将逻辑更改为您需要的任何形式,使用第二个示例,如果db中没有图像,并且用户也没有提供图像,则向规则添加验证。我只能向您显示门。你是那个必须要走过去的人。我把答案贴在这里。谢谢兄弟的回复。但我不想要默认的图像验证,我只想要在数据库中没有图像并且用户也不提供图像的情况下进行验证。所以我不这么认为,我们为图像添加了必要的规则。除此之外,我还需要在哪里添加以下代码$v->有时['image'],'required | image',函数$input use$user{return$user->notHavingImageInDb;};只需将逻辑更改为您需要的任何形式,使用第二个示例,如果db中没有图像,并且用户也没有提供图像,则向规则添加验证。我只能向您显示门。你是那个必须要走过去的人。我把答案贴在这里。