laravel 5.2 编辑表单中的图像验证
Image validation in Edit form in laravel 5.2
我有一个问题,请看下面。
我有一个编辑用户个人资料部分,我们可以在其中更新用户帐户,我想检查 table 中是否不存在图像并且用户也未提供图像,然后我们必须验证图像并显示错误。如果 table 中已经存在图像,则无需检查图像验证。除了图像验证外,一切正常。
我正在使用验证请求。下面是我在请求文件中的验证规则。
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
}
最后我在@Amir 的帮助下找到了解决方案。下面是这个问题的完整解决方案。
//在用户模型中添加这个
public function notHavingImageInDb(){
return (empty($this->image))?true:false;
//return true;
}
//在请求class.
中导入User模型和Auth class
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;
}
现在全部完成。
在上面的代码中,我们在验证中检查该列是否具有某些值,如果是,则模型函数 return 为真,这使 if 条件在请求 class 中处于活动状态,否则,如果条件保持不活动。像魅力一样工作。
谢谢
您可以创建另一个请求 class 并将其命名为 UserUpdateRequest with artisan
喜欢
php artisan make:request UserUpdateRequest
在这个请求中 class 你只需要删除 'required' 就像那样
'image' => 'image'
并将 UserUpdateResuest 设置为更新方法的参数,如
public function update(UserUpdateRequest $userUpdateRequest, $id){
//
}
我有一个问题,请看下面。
我有一个编辑用户个人资料部分,我们可以在其中更新用户帐户,我想检查 table 中是否不存在图像并且用户也未提供图像,然后我们必须验证图像并显示错误。如果 table 中已经存在图像,则无需检查图像验证。除了图像验证外,一切正常。
我正在使用验证请求。下面是我在请求文件中的验证规则。
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
}
最后我在@Amir 的帮助下找到了解决方案。下面是这个问题的完整解决方案。
//在用户模型中添加这个
public function notHavingImageInDb(){
return (empty($this->image))?true:false;
//return true;
}
//在请求class.
中导入User模型和Auth classuse 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;
}
现在全部完成。
在上面的代码中,我们在验证中检查该列是否具有某些值,如果是,则模型函数 return 为真,这使 if 条件在请求 class 中处于活动状态,否则,如果条件保持不活动。像魅力一样工作。
谢谢
您可以创建另一个请求 class 并将其命名为 UserUpdateRequest with artisan 喜欢
php artisan make:request UserUpdateRequest
在这个请求中 class 你只需要删除 'required' 就像那样
'image' => 'image'
并将 UserUpdateResuest 设置为更新方法的参数,如
public function update(UserUpdateRequest $userUpdateRequest, $id){
//
}