此问题已在此处有答案:
Laravel: Validator to validate only fields which exist in the passed data?(3个答案)
3天前关闭。
非常感谢大家!我最后的编码,修复了它的情况下,曾经帮助任何人..也可以更好地清理这段代码,但它的工作..我现在清理它太虽然和更新这一次。
public function storePersonalInfo(Request $request, $lang){
$this->validate($request, [
'avatar' => 'sometimes|required|mimes:jpeg,jpg,png',
'firstName' => 'sometimes|required',
'lastName' => 'sometimes|required'
]);
$user = Auth::user();
if ($file = $request->file('avatar')) {
$filename = hash('sha1',$file->getClientOriginalName().'-'.time()).'.'.$file->getClientOriginalExtension() ;
$filePath = 'users/'. Auth::user()->name.'/'.$filename;
$image = Image::make($file);
$image->fit(200, 200);
if (Storage::put($filePath, (string) $image->encode())) {
$user->avatar = Storage::url($filePath);
}
$user->first_name = $request->firstName;
$user->last_name = $request->lastName;
$user->save();
flash(__('Profile Updated'), 'success');
return back();
}
else
{
$user->first_name = $request->firstName;
$user->last_name = $request->lastName;
$user->save();
flash(__('Profile Updated'), 'success');
return back();
}
}
///原始问题///
用户在他们的帐户中有一个生物配置文件来更新任何细节的变化,他们不能更新他们的名字,例如,而不必附加一个新的配置文件图片上传的名称保存被接受。有人可以请建议我如何可以有用户更新只是名称的细节,而不需要在同一时间的配置文件太…我的意思是,有些情况下,用户可能只是想更新他们的个人资料图片或只是他们的名字,当然是不一定要完全完成每一次..
对不起,问,但真的坚持在这个问题上..这个问题可能已经问过了,但我需要代码的具体援助,因为我不能看到我到底做错了什么,我一直在尝试了几天现在.. Laravel是不是我的专业知识在所有对不起!我已经附上了配置文件控制器代码如下:
public function storePersonalInfo(Request $request, $lang){
$this->validate($request, [
'avatar' => 'required|mimes:jpeg,jpg,png',
'firstName' => 'required',
'lastName' => 'required'
]);
$user = Auth::user();
$file = $request->file('avatar');
$filename = hash('sha1',$file->getClientOriginalName().'-'.time()).'.'.$file->getClientOriginalExtension() ;
$filePath = 'users/'. Auth::user()->name.'/'.$filename;
$image = Image::make($file);
$image->fit(200, 200);
if (Storage::put($filePath, (string) $image->encode())) {
$user->avatar = Storage::url($filePath);
}else{
return back();
}
$user->first_name = $request->firstName;
$user->last_name = $request->lastName;
$user->save();
flash(__('Profile info updated with success '), 'success');
return back();
}
我尝试了各种if else语句,不幸的是,我找不到它。
1条答案
按热度按时间ars1skjm1#
目前,您的验证要求所有三个字段都存在,因此如果一个或多个字段不存在,则验证失败。
根据我的理解,你只需要至少有1个字段存在(并且有效),验证就可以了。require_without_all验证应该做到这一点:
(我没有检查你的代码后验证虽然)