我正在使用PHP 7和Laravel6。我在制定用户请求规则并将其用于用户控制器时出错。我制定的请求规则可在创建和更新功能中重用,因此,如果我传递了用户ID,它将验证用户的唯一性(ID除外)。但是,如果不是,它将搜索所有ID,并验证其是否唯一。我遵循BaM解决方案,在这里:https://stackoverflow.com/a/24205849
这是我的UserRequest.php:
public static function rules ($id=0, $merge=[]) {
return array_merge(
[
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users' . ($id ? ",$id" : ''),
'phone_number' => 'required|string|min:9|max:10|unique:users' . ($id ? ",$id" : ''),
'user_img' => 'required|mimes:jpeg,jpg,png,gif|max:10000',
],
$merge);
}
这是我的UserController:
public function store(Request $request)
{
$extend_rules = [
'pass' => 'required|string|min:8',
];
$validator = Validator::make($request->all(), UserRequest::rules($extend_rules));
if ($validator->fails())
{
return redirect()->back();
}
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->pass),
'phone_number' => $request->phone_number,
'user_img' => $request->user_image->store('user_img'),
]);
$user->save();
Session::flash('message', 'Your account is successfully created !');
Session::flash('alert-class', 'alert alert-success');
return redirect()->route('users.index');
}
我得到了这个错误:
ErrorException:数组到字符串的转换
我试图寻找解决方案,但似乎找不到很多我的情况。
如果有人知道,请帮助我!
答案 0 :(得分:0)
那是因为在该方法接受两种不同类型的参数时,您只是传递一个数组
$validator = Validator::make($request->all(), UserRequest::rules(0, $extend_rules)); // <-- you need to either pass 1 or 0 for the id and then $extended rules
// here is your method signature
public static function rules ($id=0, $merge=[]) {