在laravel 5.2中以编辑形式进行图像验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在laravel 5.2中以编辑形式进行图像验证相关的知识,希望对你有一定的参考价值。

我有一个问题,请看下面。

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

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

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,提前致谢。

答案

看看Conditionally Adding 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;
}

//在请求类中导入User model和Auth类。

use AppUser;
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条件在请求类中处于活动状态,否则,如果条件保持不活动状态。像魅力一样工作。

谢谢

另一答案

您可以创建另一个请求类,并将其命名为UserUpdateRequest,例如工匠

php artisan make:request UserUpdateRequest

在这个请求类中,你只需删除'required'就可以了

'image' => 'image'

并将UserUpdateResuest设置为更新方法的参数

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

以上是关于在laravel 5.2中以编辑形式进行图像验证的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 中以 json 数据的形式从验证器发出响应

在 laravel 5.2 中使用默认身份验证路由对用户进行身份验证后设置会话数据

在AuthController中覆盖laravel的5.2身份验证方法

如何在 laravel 5.2 中使用多重身份验证 [关闭]

如何在 Laravel 5.2 中验证 RESTful API?

当我在 Laravel 5.2 中进行身份验证时,我无法访问关于页面