您好我有一个控制器可以从1个表单中将多个值插入到2个表中,我可以验证它们,但一次只能验证一个。只有当我点击按钮插入它才会显示第二次验证的错误。
public function store(CreateRequest $request, RegisterRequest $request2)
{
$input = Input::all();
$validation = Validator::make($input, $request->rules());
$validation2 = Validator::make($input, $request2->rules());
if ($validation->passes() and $validation2->passes())
{
Users::create($input);
Register::create($input2);
return Redirect::route('users.main')
->withSuccess('Created');
}
return Redirect::route('users.create')
->withInput()
->withErrors();
}
答案 0 :(得分:1)
创建一个请求。只说RegistrationRequest
并将所有表单字段和规则放入其中。使用该请求只是为了存储这样的用户。
public function store(RegisterRequest $request)
{
$data = $request->all();
$validation = Validator::make($data, $request->rules());
if ($validation->passes()) {
$user = User::create([
'username' => $request->username,
'name' => $request->name
]);
$register = Register::create([
'blabla' => $request->name,
'username' => $user->username
]);
return Redirect::route('users.main')->withSuccess('Created');
}
return Redirect::route('users.create')->withInput()->withErrors();
}
这只是一个演示,根据您遇到的实际问题是您正在尝试错误的方法,还有其他方法可以执行此操作。并且还会抛出验证错误并将其重定向到自动创建视图。所以你不必自己动手
答案 1 :(得分:0)
您可以合并验证器的消息并将其发送回:
$errors = $validation->errors()->merge($validation2->errors())
return Redirect::route('users.create')->withInput()->withErrors($errors);